HTTP:权威指南说
\n\n\n\n\n虚拟托管的源服务器,并且不允许资源因请求的主机而异,可能会忽略主机标头字段值。但是,任何根据主机区分资源的源服务器都必须使用以下规则来确定 HTTP/1.1 请求上所请求的资源:
\n\n\n
\n- \n
如果HTTP 请求消息中的URL是绝对的(即包含方案和主机组件),则主机标头中的值将被忽略,而采用URL。
- \n
如果HTTP 请求消息中的 URL没有主机,并且请求包含 Host 标头,则从 Host 标头获取主机/端口的值。
- \n
如果通过步骤1或2无法确定有效主机,则会向客户端返回400 Bad Response响应。
“HTTP请求消息中的URL”在哪里?
\n\n是请求行中的那个(在 HTTP 请求的第一行中,在诸如 之类的方法之后GET)吗?
谢谢。
\nURL 不需要出现在 HTTP 请求中的任何位置(除非向代理发出请求;请参见下文)。
你书中引用的第2点有错误。URL 不会出现在原始形式(HTTP 请求目标的最常见形式)的请求行中。通常只有 URL 的特定组件出现在请求中,即出现在 Host 标头中的主机(和端口,如果适用)以及出现在请求行中的路径和查询字符串。请求中没有出现的一件事是方案(http 或 https),如果 Web 应用程序确实需要了解该方案,那么开发人员有时会遇到这种情况。
请求行的替代形式可以包含完整的 URL 作为请求目标,并且服务器必须能够处理这种格式,称为绝对形式。除非用户代理故意与 HTTP 代理对话,否则通常不会看到这种形式。在这种情况下,代理需要知道该方案,以便它可以尝试传递请求,而完整的 URL 形式是相关标准 (RFC 7230) 中定义的方法。
| 归档时间: |
|
| 查看次数: |
1652 次 |
| 最近记录: |