http запросы
Host: www.php.net\r\n\r\n
Главное отличие 1.1 в том что поддерживается дополнительное поле "Host", где можно указать hostname сервера. Благодаря этому на этом физическом сервере можно размещать любое количество сайтов с разными именами хостов. В 1.0 было все очень просто: один IP адрес - один сайт.
Host: php.net\r\n\r\n
Выдает ошибку 400. Как же все таки получить в ответ от сервера исходный код главной страницы? Может в запросе нужно указывать еще какие-то параметры?
вот что у меня получилось (представлено лишь начало вывода):
Trying 69.147.83.197...
Connected to y2.php.net.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.php.net
HTTP/1.1 200 OK
Date: Tue, 29 Nov 2011 19:33:50 GMT
Server: Apache/1.3.41 (Unix) PHP/5.2.17
X-Powered-By: PHP/5.2.17
Content-language: en
Set-Cookie: COUNTRY=RUS%2C88.84.213.199; expires=Tue, 06-Dec-2011 19:33:50 GMT; path=/; domain=.php.net
Last-Modified: Tue, 29 Nov 2011 22:20:23 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=utf-8
f26
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>PHP: Hypertext Preprocessor</title>
<style type="text/css" media="all">
@import url("http://static.php.net/www.php.net/styles/site.css");
@import url("http://static.php.net/www.php.net/styles/phpnet.css");
</style>
<!--[if IE]><![if gte IE 6]><![endif]-->
<style type="text/css" media="print">
@import url("http://static.php.net/www.php.net/styles/print.css");
</style>
<!--[if IE]><![endif]><![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Главное отличие 1.1 в том что поддерживается дополнительное поле "Host", где можно указать hostname сервера. Благодаря этому ...
Это не совсем так. Поле Host в 1.1 - обязательное, в 1.0 - нет.
RFC2616 и связанные, можно тут
"Борис, ты не прав!" (с)
...а точнее заблуждаешься. В RFC 1945 заголовка Host (глава 5) еще не было, в RFC 2616 он уже есть и описывается в 14.23.
Понятие host-та в RFC 1945 безусловно есть, но это не заголовок запроса, это часть URI.
Да, это сложный момент, его там нет (но я ж не говорю что он там есть :) ). Просто насколько я помню историю этого вопроса дело было так. В заголовки ты имеешь право добавлять свои поля. И поле Host стало добавляться очень рано и очень многими. И констатировалось что 99% используемых в 2000 году браузеров (включая сильно устаревшие) это поле посылали в своих HTTP/1.0 запросах.
Поскольку HTTP протокол является расширяемым, то в запросах можно использовать какие угодно заголовки. Сам несколько таких активно юзаю. Но это не делает их частью стандарта, поэтому вносить неоднозначность в их интерпретацию. Я на это обращаю внимание. Поэтому утверждение о том, что в HTTP 1.0 заголовок Host был необязательным не корректно.