Лекция: Транзакции HTTP
Когда браузер запрашивает Web-страницу с указанного адреса, он создает и отсылает серверу по указанному адресу запрос HTTP, заголовок которого выглядит следующим образом:
GET /my.php HTTP/1.1
Accept: image/gif, image/png, image/jpeg, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0;
Windows XP; .NET CLR 1.1.4322)
Host: my.com
Connection: Keep-Alive
Вот что эти строки значат:
GET — метод HTTP который означает: «Дай информацию, находящуюся в му.php, и вышли ее, используя протокол HTTP 1.1».
Accept — «могу понимать графическую информацию в следующих форматах».
Accept-Language — «язык, — английский, американский ».
Accept-Encoding — «можно отправлять данные в сжатом виде, поскольку я понимаю типы сжатия gzip и deflate».
User-Agent — «тип моего браузера — Microsoft Explorer 8, выполняющийся под управлением Windows XP».
Host — «доставь мне информацию /my.php с компьютера, находящегося на хосте my.com».
Connection: Keep-Alive — «держи подключение HTTP открытым, пока браузер не закроет его». Постоянное подключение повышает производительность, поскольку соединение не нужно закрывать и снова открывать для каждого подключения. Без Keep-Alive Web-страница будет иметь множество подключений
Когда Web-сервер получает подобный запрос, он должен просмотреть информацию на сервере, которая представлена /my. php. Если информация на сервере существует, сервер должен отправить клиенту (браузеру) ответ (response ) в виде:
HTTP/1.1 200 OK
Date: Sun, 14 Mar 2010 21:36:39 GMT
Server: Apache/2
Last-Modified: Sat, 28 Nov 2009 03:59:01 GMT
ETag: «1387e3-5f88-479666db44b40»
Accept-Ranges: bytes
Content-Length: 24456
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html; charset=utf-8
<html lang=«en-US» xml:lang = «en-US»> <nlns=«www.w3.org/1999/xhtml»>
<head>
<script>
HTTP-ответ состоит из двух частей. В начале идет заголовок ответа (response header). Затем идет пустая строка и далее — сама запрошенная информация. Эта вторая часть называется телом (body). Вот что означают части заголовка:
HTTP/1.1 — первая строка сообщает клиенту, что информация будет отправлена по протоколу HTTP версии 1.1. Код 200 состояния HTTP означает: «Все хорошо, документ найден и сейчас будет отправлен».
Date — сообщает клиенту дату, установленную на сервере, с которого поступает информация. Стандартный часовой пояс — GMT, то есть время по Гринвичу.
Server — каков тип сервера, предоставляющего информацию.
Connection — сообщает клиенту, что соединение будет закрыто после того, как сервер завершит отправку информации.
Content-Type — сообщает клиенту, какой тип содержимого будет отправлен. В дополнение также указывается набор символов.