JavaRush /Блоги Java /Random-TG /Қисми 3. Протоколҳои HTTP/HTTPS

Қисми 3. Протоколҳои HTTP/HTTPS

Дар гурӯҳ нашр шудааст
Ин мавод як қисми силсилаи «Муқаддима ба рушди корхона» мебошад. Мақолаҳои қаблӣ: Салом! Имрӯз мо протоколҳои HTTP ва HTTPS-ро мефаҳмем. Аммо аввал, биёед як нуктаро равшан кунем: сухан дар бораи протоколҳои интиқоли додаҳо тавассути шабака дар қабати татбиқи модели OSI меравад. Тавре ки шумо дар хотир доред, мо дар яке аз мақолаҳои қаблӣ модели OSI-ро баррасӣ карда будем. Ва агар шумо дар хотир надоред, ин ҷост . Қисми 3. Протоколҳои HTTP/HTTPS - 1

Протоколи интиқоли маълумот чист

Ин номест, ки созишномаи аз ҷониби умум қабулшуда дода шудааст, ки ба шарофати он таҳиягарони хидматҳои гуногун маълумотро дар як шакли ягона мефиристанд. Масалан, бо истифода аз Google Chrome, шумо метавонед ҳам аз Facebook ва ҳам аз Twitter маълумот гиред, зеро таҳиягарон онро бо истифода аз протоколи стандартии HTTP интиқол медиҳанд ва браузери шумо метавонад онро коркард кунад. Қоидаҳои ягона барои худи таҳиягарони тарафи server низ хеле қулайанд: китобхонаҳои зиёде мавҷуданд, ки метавонанд маълумотро барои шумо табдил диҳанд ва бо истифода аз протоколи зарурӣ фиристанд. HTTP дар аввал ҳамчун протокол барои интиқоли саҳифаҳои HTML таҳия шуда буд. Ин ҳолат барои муддати тӯлонӣ буд, аммо ҳоло барномасозон аксар вақт ҳам сатрҳо ва ҳам файлҳои медиаро тавассути он интиқол медиҳанд. Дар маҷмӯъ, ин протокол бисёрҷониба ва чандир аст ва истифодаи он воқеан осон аст. Акнун биёед бифаҳмем, ки чӣ тавр ин корро кунем.

Сохтори HTTP

Дарҳол бояд қайд кард, ки протоколи HTTP танҳо аз матн иборат аст. Хуб, мо бештар ба сохторе таваҷҷӯҳ дорем, ки ин матн дар он ҷойгир аст. Ҳар як паём аз се қисм иборат аст:
  1. Сатри ибтидоӣ — маълумоти хадамотро муайян мекунад.
  2. Сарлавҳаҳо - тавсифи параметрҳои паём.
  3. Маҷмаи паём (Бадан) - маълумоти паём. Аз сарлавҳаҳо бояд бо хати холӣ ҷудо карда шаванд.
Бо истифода аз протоколи HTTP, шумо метавонед ба server дархост ирсол кунед (дархост) ва аз server посух (ҷавоб) гиред. Дархостҳо ва ҷавобҳо параметрҳои каме фарқ мекунанд.

Дархости оддии HTTP чӣ гуна ба назар мерасад

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Сатри ибтидоӣ иборат аст аз:
  • GET - усули дархост;
  • / — роҳи дархост (роҳ);
  • HTTP/1.1 - versionи протоколи интиқоли маълумот.
Сипас сарлавҳаҳоро пайравӣ кунед:
  • Хост — мизбоне, ки дархост ба он равона шудааст;
  • User-Agent муштарӣест, ки дархост мефиристад.
Ягон мақоми паём вуҷуд надорад. Дар дархости HTTP танҳо хати оғоз ва сарлавҳаи Хост талаб карда мешавад. Акнун биёед ҳама чизро бо тартиб дида бароем. Дархости HTTP бояд ягон усулро дар бар гирад. Дар маҷмӯъ нӯҳтои онҳо мавҷуданд: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Аз ҳама маъмул GET ва POST мебошанд. Ин ду усул дар аввал кофӣ хоҳанд буд. GET - мундариҷаро аз server дархост мекунад. Аз ин рӯ, дархостҳо бо усули GET матни паём надоранд. Аммо агар лозим бошад, шумо метавонед параметрҳоро тавассути роҳ дар ин формат фиристед: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 Дар ин ҷо: javarush .com — мизбон, /send — роҳи дархост, ? — ҷудокунанда, ки нишон медиҳад, ки параметрҳои дархост пайравӣ мекунанд. Дар охир, параметрҳо дар формати калид=арзиш номбар карда мешаванд, ки бо амперсанд ҷудо карда шудаанд. POST - маълумотро дар server интишор мекунад. Дархости POST метавонад маълумоти гуногунро интиқол диҳад: параметрҳо дар формати калид=арзиш, JSON, codeи HTML ё ҳатто файлҳо. Ҳама маълумот дар матни паём интиқол дода мешавад. Барои намуна:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
Дархост ба javarush.com/user/create/json фиристода мешавад, versionи протокол HTTP/1.1. Қабул муайян мекунад, ки мизоҷ кадом формати посухро интизор аст, Content-Type муайян мекунад, ки матни паём дар кадом формат фиристода мешавад. Content-Length - шумораи аломатҳо дар бадан. Дархости HTTP метавонад сарлавҳаҳои гуногунро дар бар гирад. Тафсилоти бештарро дар тавсифи протокол пайдо кардан мумкин аст .

Ҷавобҳои HTTP

Пас аз гирифтани дархост, server онро коркард мекунад ва ба муштарӣ ҷавоб мефиристад:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
Сатри ибтидоӣ дар посух дорои versionи протокол (HTTP/1.1), Рамзи Статус (200), Тавсифи Ҳолат (Хуб). Сарлавҳаҳо намуд ва дарозии мундариҷаро нишон медиҳанд. Дар қисми ҷавоб рамзи HTML мавҷуд аст, ки браузер ба саҳифаи HTML ҷалб мекунад.

Рамзҳои ҳолати вокуниш

Бо матни паём ва сарлавҳаҳо ҳама чиз равшан аст, аммо дар бораи рамзҳои статус чанд сухан гуфтан меарзад. Рамзҳои ҳолати посух ҳамеша се рақам мебошанд ва рақами якуми code категорияи ҷавобро нишон медиҳад:
  • 1xx - иттилоотӣ. Дархост қабул шуд, server барои идома омода аст;
  • 2xx - муваффақ. Дархост қабул, фаҳмида ва коркард шудааст;
  • 3xx - масир. Барои коркарди дархост қадамҳои зерин бояд иҷро шаванд;
  • 4xx - хатои муштарӣ. Дархост хатогиҳо дорад ё ба протокол мувофиқат намекунад;
  • 5xx - хатои server. Сервер натавонист дархостро коркард кунад, гарчанде ки он дуруст тартиб дода шуда буд;
Рақамҳои дуюм ва сеюм дар code ҷавобро муфассал шарҳ медиҳанд. Барои намуна:
  • 200 OK — дархост қабул ва бомуваффақият коркард карда шуд;
  • 201 Эҷод шуд — дархост қабул ва бомуваффақият коркард карда шуд, ки дар натиҷа манбаи нав ё мисоли он эҷод шуд;
  • 301 Ба таври доимӣ кӯчонида шуд - манбаи дархостшуда ба таври доимӣ интиқол дода шудааст ва дархостҳои минбаъда ба он бояд дар суроғаи нав сурат гиранд;
  • 307 Бозгашти муваққатӣ - манбаъ муваққатан кӯчонида шудааст. Ҳоло шумо метавонед ба он бо истифода аз масири худкор дастрасӣ пайдо кунед;
  • 403 Манъ - дархост равшан аст, аммо иҷозат лозим аст;
  • 404 Наёфт - server захираро дар ин суроға наёфт;
  • 501 Иҷро нашудааст - server функсияи ҷавоб додан ба ин дархостро дастгирӣ намекунад;
  • 505 Версияи HTTP дастгирӣ намешавад - server versionи муқарраршудаи протоколи HTTP-ро дастгирӣ намекунад.
Илова ба рамзи ҳолати посух, тавсифи вазъ низ фиристода мешавад, ки онро барои фаҳмидани чӣ маъно доштани мақоми мушаххас осон мегардонад. Протоколи HTTP хеле амалӣ аст: он миқдори зиёди сарлавҳаҳоро таъмин мекунад, ки бо истифода аз онҳо шумо метавонед иртиботи чандирро байни муштарӣ ва server танзим кунед. Ҳама сарлавҳаҳои дархост ва посух, усулҳои дархост ва codeҳои ҳолати посухро дар як мақола баррасӣ кардан мумкин нест. Агар лозим бошад, шумо метавонед тавсифи расмии протоколро хонед , ки тамоми нозукиҳоро тавсиф мекунад. Протоколи HTTP маъмулан дар бандари 80 истифода мешавад, аз ин рӯ вақте ки шумо суроғаеро мебинед, ки дар порти 80 тамом мешавад, шумо боварӣ дошта метавонед, ки ба он тавассути HTTP дастрас шудан лозим аст. Бо рушди технология ва ҳаракати фаъоли маълумоти шахсӣ дар Интернет, мо бояд дар бораи чӣ гуна муҳофизати иловагии иттилооте, ки муштарӣ ба server интиқол медиҳад, фикр мекардем. Натиҷа протоколи HTTPS буд.

Фарқи байни HTTPS ва HTTP чист

HTTPS аз ҷиҳати синтаксисӣ ба протоколи HTTP якхела аст, яъне он сатрҳои ибтидоӣ ва сарлавҳаҳои якхеларо истифода мебарад. Ягона фарқиятҳо рамзгузории иловагӣ ва порти пешфарз мебошанд (443) . HTTPS байни HTTP ва TCP, яъне байни қабатҳои барнома ва нақлиёт рамзгузорӣ шудааст. Агар шумо фаромӯш карда бошед, ки он чӣ аст, ба мақолаи модели OSI нигаред . Стандарти муосири рамзгузорӣ TLS мебошад. Мо ба ин мавзӯъ чандон амиқ намеравем, аммо дар хотир доред, ки рамзгузорӣ пеш аз расидани маълумот ба қабати нақлиёт сурат мегирад . HTTPS комилан ҳама маълумотро рамзгузорӣ мекунад, ба истиснои ҳост ва порте, ки дархост ба он фиристода мешавад. Барои иваз кардани server ба истифодаи протоколи HTTPS ба ҷои HTTP, ба мо лозим нест, ки рамзи serverро иваз кунем. Ин хусусият дар контейнерҳои сервлет фаъол карда шудааст, ки мо дар бораи он дар мақолаҳои зерин сӯҳбат хоҳем кард. Ин ҳама барои имрӯз аст. Аммо як дақиқа интизор шавед. Барои ҳис кардани дархостҳои HTTP, Google Chrome-ро кушоед, F12-ро пахш кунед ва ҷадвали шабакаро интихоб кунед. Ҳама дархостҳо ва посухҳое, ки аз ҷониби браузери шумо фиристода/қабул шудаанд, дар ин ҷо намоиш дода мешаванд. Қисми 4. Асосҳои Maven Қисми 5. Сервлетҳо. Навиштани замимаи оддии веб Қисми 6. Контейнерҳои сервлет Қисми 7. Муаррифии намунаи MVC (Model-View-Controller) Қисми 8. Навиштани барномаи хурди пурборкунандаи баҳор
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION