http - 在 HTTP 中,仅提供路径作为 Request-URI 时是否允许查询?

标签 http curl httprequest uri

我在实现简单的 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 尝试过此操作。根据规范,这不应该是非法的吗?我在监督什么吗?

最佳答案

您的问题是您正在查看过时的规范版本。

参见https://www.greenbytes.de/tech/webdav/rfc7230.html#origin-form以获得正确的 ABNF。

关于http - 在 HTTP 中,仅提供路径作为 Request-URI 时是否允许查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45214021/

相关文章:

php - 如何在发生任何错误时返回 HTTP 500 代码,无论如何

python - 如何在Python的单元测试方案中模拟HTTP请求

python - 我应该让长轮询连接保持多长时间?

ios - 志愿者匹配 API Objective-C

php - 更新后有一个空文件

php - 登录谷歌分析

python 瓶 : Can't connect to server or debug it

java - 如何实现这样的流量

arrays - JSON 语法 - 正文发布请求 - SWIFT4

php - 使用 php 获取缩短网址(如 bit.ly)的最终网址