Как сделать стандартный запрос GET в HTTP1.1 - PullRequest
2 голосов
/ 05 ноября 2011

Вкратце: как стандарт HTTP1.1 соответствует rfc2616 GET-запросу на URL-адрес, например http://example.com/?query

Википедия говорит

GET /?query HTTP/1.1
...

В rfc2616 написано

Request-URI    = "*" | absoluteURI | abs_path | authority

Для запросов GET важны только abs_path и absoluteURI.

abs_path

, где abs_path фактически из uri rfc , который запрещает "?", Так как abs_path фактически является частью uri, которая предшествует части запроса.Таким образом, кажется, что вариант из Википедии синтаксически некорректен.

absoluteURI

Для этого URFC говорит:

absoluteURI   = scheme ":" ( hier_part | opaque_part )
hier_part     = ( net_path | abs_path ) [ "?" query ]

Так что можно поместить такой запрос вRequest-URI, но, к сожалению, rfc2616 запрещает передачу absoluteURI для клиента, не говорящего с прокси.Это можно получить стандартным образом с помощью веб-сервера, но на самом деле невозможно отправить его стандартным образом с помощью браузера или другого клиента.

rel_path

К моему удивлению rfc2616 упоминает "?"в rel_path, но это не разрешено rfc2396 , и на самом деле невозможно поместить rel_path где-нибудь в запрос http, поскольку правило rel_path не используется синтаксически нигде в rfc2616.

Итак, мой вопрос: как стандартно сделать такой запрос, и все ли браузеры нарушают стандарт?

1 Ответ

4 голосов
/ 05 ноября 2011

Это ошибка в RFC 2616. См. http://trac.tools.ietf.org/wg/httpbis/trac/ticket/11.

...