HTTP (HyperText Transfer Protocol) е протокол за трансфер на хипертекст в интернет. Първата версия на протокола е от 1991 г., а през 2015 г. излиза новата и по-добра версия HTTP/2.
HTTP протоколът е измислен със създаването на World Wide Web (световната информационна мрежа или уеб). Този протокол определя правилата, по които се извършва обмяната на информация между уеб сървър и уеб клиент (най-често уеб браузър).
Когато Тим Бърнърс-Лий осъществява идеята си, за мрежа от взаимно свързана информация, наричана днес уеб, той създава и основните ѝ компоненти. Създаден е първият уеб сървър, който предоставя първата уеб страница на първия уеб браузър. Комуникацията между уеб браузър и уеб сървър се извършва по създадения за тази цел протокол – HTTP.
В HTTP протокола са описани няколко метода за поискване (и изпращане) на информация от уеб браузъра към уеб сървъра. Тези HTTP методи се съдържат в заявките, които уеб браузърът изпраща към уеб сървъра.
Най-често срещаните HTTP методи са GET и POST. Съществуват още: HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT.
В HTTP протокола са описани и HTTP статус кодове, които се изпращат от уеб сървъра, в отговор на заявките от уеб браузъра.
Уеб браузърът и уеб сървърът си говорят на един език – HTTP
Уеб браузърът се свързва с уеб сървъра чрез мрежова TCP връзка, по която изпраща HTTP заявки и приема HTTP отговори.
HTTP заявките от браузъра и HTTP отговорите на сървъра започват с тъй наречените HTTP хедъри. Това са редовете, съдържащи важните указания, по които протича HTTP обмена на информация.
В началото на HTTP заявката чрез HTTP хедърите браузърът описва какво търси и в какъв вид данни би могъл да го получи. Според това описание уеб сървърът ще знае какво и как точно да изпрати към уеб браузъра.
Например в следната HTTP заявка браузърът пита уеб сървъра за ресурса index.html
, като го търси на хост help.superhosting.bg
и заявява, че разговорът ще се проведе по протокол HTTP/1.1
:
GET /index.html HTTP/1.1
Host: help.superhosting.bg
В следващите HTTP хедъри предоставя повече информация за себе си (User-Agent) и за възможностите и предпочитанията си. Подава информация на уеб сървъра, че може да приеме данните в определен формат (Accept) – text, html, xml, xhtml и че може да са компресирани (gzip, deflate).
User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/51.0
Accept: text/html,application/xhtml+xml,application/xml
Accept-Encoding: gzip, deflate
На тази HTTP заявка уеб сървърът връща HTTP отговор, започващ с код 200 OK. Това означава, че търсеният ресурс е наличен, заявката е приета и информацията се изпраща към уеб браузъра.
HTTP/1.1 200 OK
В следващите HTTP хедъри уеб сървърът предоставя повече информация за себе си (Server), за установената връзка (Connection) и за самата информация (Content), която изпраща към браузъра.
Server: Apache
Content-Encoding: gzip
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8