Вкратце: как стандарт 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.
Итак, мой вопрос: как стандартно сделать такой запрос, и все ли браузеры нарушают стандарт?