HTTP Location

HTTP Location 是在两种情况下,因来自HTTP服务器的响应中返回头域

  1. 要求网页浏览器加载其他网页(域名转址)。在这种情况下,应该使用HTTP状态码3xx发送Location头(Location header)。当请求的URI具有以下内容时,Web服务器响应传递:
    • 临时移动;
    • 永久移动;
    • 处理请求,例如一个POST表单,以一个不同的URI来提供该请求的结果。
  2. 提供有关新创建资源位置的信息。在这种情况下,应该使用HTTP状态码201或202发送Location头。[1]

HTTP 1.1规范(IETF RFC 2616)的过时版本需要完整的重定向URI。[2] IETF HTTP工作组发现,最受欢迎的Web浏览器允许传递相对URL(relative URL)[3] 。因此,更新后的HTTP 1.1规范(IETF RFC 7231)放宽了原始的约束,允许在位置标题中使用相对URL。[4]

例子

绝对URL(Absolute URL)示例

绝对URL是一种以方案为头的URL[5] (例如:http:,https:,telnet:,mailto:)[6] ,并符合方案特定的语法和语义。 例如HTTP URL特定于HTTP方案的语法和语义需要用“主机”(Web服务器地址)和“绝对路径”,其中可选元件为“端口”和“查询”。

例如,客户端请求:

GET /index.html HTTP/1.1
Host: www.example.com

服务器回应:

HTTP/1.1 302 Found
Location: http://www.example.org/index.php

该位置的URL被客户端重定向到http://www.example.org/index.php.

相对URL(Relative URL)示例

相对URL是不包含方案或主机的URL。为了理解,它们必须与原始请求的URL相结合。例如,客户端请求:

GET /blog HTTP/1.1
Host: www.example.com

服务器回应:

HTTP/1.1 302 Found
Location: /articles/

该位置的URL被客户端扩展为http://www.example.com/articles/.

参见

参考文献

  1. ^ Richardson, Leonard. RESTful Web Services. Sebastopol: O'Reilly. 2007: 228–230. ISBN 978-0-596-52926-0. 
  2. ^ Location. Hypertext Transfer Protocol -- HTTP/1.1. IETF. June 1999: sec. 14.30. RFC 2616. 
  3. ^ IETF HTTPbis Working Group Ticket 185. [2017-06-30]. (原始内容存档于2016-10-13). 
  4. ^ Location. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. IETF. June 2014: sec. 7.1.2. RFC 7231. 
  5. ^ Uniform Resource Identifier (URI): Generic Syntax. IETF. January 2005. RFC 3986. 
  6. ^ IANA Uniform Resource Identifer (URI) Schemes. [2014-11-21]. (原始内容存档于2010-08-24).