【发布时间】:2017-07-20 11:57:22
【问题描述】:
我在实现一个简单的 Web 服务器时遇到了问题。根据规范,HTTP/1.1 request 以这一行开头:
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
在这一行中,有一个Request-URI,其定义如下:
Request-URI = "*" | absoluteURI | abs_path | authority
因此,我可以发送完整的 URI(带有架构、服务器名称等)或 abs_path(authority,如规范中所定义,仅适用于 CONNECT 方法)。然后我有:
abs_path = "/" path_segments
path_segments = segment *( "/" segment )
这些定义来自URI spec,它链接在 HTTP 规范中。正如我们所见,abs_path 只是一个绝对路径没有查询。
到目前为止的理论。现在,当我实际向http://example.com/?key=value 发送 HTTP GET 请求时,会发送此行:
GET /?key=value HTTP/1.1
我使用 Firefox、Chrome 和 curl 进行了尝试。根据规范,这不应该是非法的吗?我在监督什么吗?
【问题讨论】:
标签: http curl httprequest uri