“HTTP 请求消息中的 URL”在哪里?

Tim*_*Tim -1 http url

HTTP:权威指南

\n\n
\n

虚拟托管的源服务器,并且不允许资源因请求的主机而异,可能会忽略主机标头字段值。但是,任何根据主机区分资源的源服务器都必须使用以下规则来确定 HTTP/1.1 请求上所请求的资源:

\n\n
    \n
  1. 如果HTTP 请求消息中的URL是绝对的(即包含方案和主机组件),则主机标头中的值将被忽略,而采用URL。

  2. \n
  3. 如果HTTP 请求消息中的 URL没有主机,并且请求包含 Host 标头,则从 Host 标头获取主机/端口的值。

  4. \n
  5. 如果通过步骤1或2无法确定有效主机,则会向客户端返回400 Bad Response响应。

  6. \n
\n
\n\n

“HTTP请求消息中的URL”在哪里?

\n\n

是请求行中的那个(在 HTTP 请求的第一行中,在诸如 之类的方法之后GET)吗?

\n\n

谢谢。

\n

Mic*_*ton 5

URL 不需要出现在 HTTP 请求中的任何位置(除非向代理发出请求;请参见下文)。

你书中引用的第2点有错误。URL 不会出现在原始形式(HTTP 请求目标的最常见形式)的请求行中。通常只有 URL 的特定组件出现在请求中,即出现在 Host 标头中的主机(和端口,如果适用)以及出现在请求行中的路径和查询字符串。请求中没有出现的一件事是方案(http 或 https),如果 Web 应用程序确实需要了解该方案,那么开发人员有时会遇到这种情况。

请求行的替代形式可以包含完整的 URL 作为请求目标,并且服务器必须能够处理这种格式,称为绝对形式。除非用户代理故意与 HTTP 代理对话,否则通常不会看到这种形式。在这种情况下,代理需要知道该方案,以便它可以尝试传递请求,而完整的 URL 形式是相关标准 (RFC 7230) 中定义的方法。

  • 你还没读过RFC吗? (2认同)