Действительный заголовок HTTP? `GET /page.html Http1.0`? - PullRequest
1 голос
/ 25 мая 2010

Хорошо, я читал HTTP и нашел эту страницу . Это пример HTTP-запроса, который был размещен там:

GET /http.html Http1.1
Host: www.http.header.free.fr
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
Accept-Language: Fr
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)
Connection: Keep-Alive

Я попробовал в telnet, и это сработало. Но везде я вижу такую ​​строку запроса

GET /http.html HTTP/1.1

Важным отличием является то, что HTTP это все заглавные буквы и символ /.

Они оба правы? Кажется, они оба работают на сайтах, на которых я его тестировал. Я просмотрел RFC HTTP, но не нашел ничего полезного. Кто-нибудь еще видел такой заголовок запроса? Это официально поддерживается?

Ответы [ 3 ]

3 голосов
/ 25 мая 2010

Обращаясь к протоколу HTTP , он должен быть в HTTP/1.1 или HTTP/1.0 (более старый). Теперь все зависит от того, как был разработан http-сервер. Он может принять это, но вы не должны на это полагаться.

EDIT:

HTTP-Version = "HTTP" "/" 1 * DIGIT "" 1 * DIGIT

А теперь протокол 1.1, поэтому вы должны использовать: GET /http.html HTTP/1.1

1 голос
/ 25 мая 2010

Согласно RFC2145 (стр. 3),

RFC791 [4] определяет «принцип надежности» в разделе 3.2:

реализация должна быть консервативной в своем поведении отправки и либеральной в своем поведении получения.

Этот принцип применим и к HTTP. Это фундаментальная основа для интерпретации любой части спецификации HTTP, которая все еще может быть неоднозначной. В частности, реализации HTTP НЕ ДОЛЖНЫ отклонять сообщения или генерировать ошибки без необходимости.

А в частности:

Явным намерением спецификации HTTP является и всегда было то, что реализация, получающая заголовок сообщения, который она не понимает, ДОЛЖНА игнорировать этот заголовок.

Таким образом, сервер игнорирует номер версии в случае, если он «Http1.1» (который недопустим) и, вероятно, интерпретирует сообщение как сообщение HTTP / 1.0 (или, возможно, даже HTTP / 0.9!). Конечно, вы не должны полагаться на это поведение!

0 голосов
/ 25 мая 2010

должно быть

GET /http.html HTTP/1.1
...