简而言之:如何以符合 HTTP1.1 标准的方式来 rfc2616 对像http://example.com/?query这样的 URL 进行 GET 查询
维基百科说
GET /?query HTTP/1.1
...
在rfc2616 中它说
Request-URI = "*" | absoluteURI | abs_path | authority
只有 abs_path 和 absoluteURI 与 GET 请求相关。
abs_path
其中 abs_path 实际上来自禁止“?”的uri rfc,因为 abs_path 实际上是查询部分之前的 uri 部分。所以看起来维基百科的变体在语法上是不正确的。
绝对URI
为此,uri rfc 说
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 中的任何地方都没有在语法上使用。
所以我的问题是,如何以符合标准的方式提出这样的请求,所有浏览器是否都违反了标准?