А вот RFC с Вами не согласен: (rfc2616, section-3.1)
The protocol versioning policy is intended to allow the sender to indicate the format of a message and its capacity for understanding further HTTP communication
Даже если некий сервер поймет Host несмотря на HTTP 1.0 (хотя может и не понять) то делать так все равно плохо: Сервер может и не поддерживать HTTP 1.1, и тогда вместо ошибки "unsupported protocol" (или bad request или что там должно быть?) просто выдаст контент с единственного сайта на этом IP. И это будет грустно:)
RFC 2145, раздел 2: The minor version sent in a message MUST NOT indicate the interpretation of other header fields. This reflects the principle that the minor version labels the capability of the sender, not the interpretation of the message.
Наличие MUST NOT в Вашей цитате явно делает ее более приоритетной чем моя, так что Вы видимо правы. Однако остается проблема с HTTP 1.0 сервером: он молча заигнорит заголовок и выдаст не то, что ждет клиент.
Впрочем этому клиенту пофиг что выдадут: он даже статус код не читает: сразу отваливается
ИМХО, главный WTF в том, чтобы послать запрос и, не дождавшись ответа, закрыть сокет. ИМХО, результат может быть любым. Ну и посылать Host с HTTP/1.0 - это тоже неортодоксально. Даже если формально RFC это разрешает, я бы не стал ставить такие эксперименты.
Wget 1.13, released August 2011, supports HTTP/1.1, fixed some portability issues, and used the GnuTLS library by default for secure connections. Да, сознаюсь, у меня немного устаревшие данные.
В том что в HTTP 1.0 не было заголовка Host?
Reply
Reply
The protocol versioning policy is intended to allow
the sender to indicate the format of a message and its capacity for
understanding further HTTP communication
Даже если некий сервер поймет Host несмотря на HTTP 1.0 (хотя может и не понять) то делать так все равно плохо: Сервер может и не поддерживать HTTP 1.1, и тогда вместо ошибки "unsupported protocol" (или bad request или что там должно быть?) просто выдаст контент с единственного сайта на этом IP.
И это будет грустно:)
Reply
The minor version sent in a message MUST NOT indicate the interpretation of other header fields. This reflects the principle that the minor version labels the capability of the sender, not the interpretation of the message.
Reply
Однако остается проблема с HTTP 1.0 сервером: он молча заигнорит заголовок и выдаст не то, что ждет клиент.
Впрочем этому клиенту пофиг что выдадут: он даже статус код не читает: сразу отваливается
Reply
Reply
Reply
wget не умеет 1.1, а Host: умел всегда.
Reply
/home/sam/rwvariants❯ wget -d https://google.com
DEBUG output created by Wget 1.14 on linux-gnu.
URI encoding = ‘UTF-8’
--2013-03-26 14:11:24-- https://google.com/
Resolving google.com (google.com)... 173.194.70.102, 173.194.70.101, 173.194.70.100, ...
Caching google.com => 173.194.70.102 173.194.70.101 173.194.70.100 173.194.70.139 173.194.70.138 173.194.70.113 2a00:1450:4001:c02::8a
Connecting to google.com (google.com)|173.194.70.102|:443... connected.
Created socket 5.
Releasing 0x0000000002491810 (new refcount 1).
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.14 (linux-gnu)
Accept: */*
Host: google.com
Connection: Keep-Alive
.....
Reply
Да, сознаюсь, у меня немного устаревшие данные.
Reply
Leave a comment