HTTP Location
HTTP Location 是在两种情况下,因来自HTTP服务器的响应中返回头域:
- 要求网页浏览器加载其他网页(域名转址)。在这种情况下,应该使用HTTP状态码3xx发送Location头(Location header)。当请求的URI具有以下内容时,Web服务器响应传递:
- 临时移动;
- 永久移动;
- 处理请求,例如一个POST表单,以一个不同的URI来提供该请求的结果。
- 提供有关新创建资源位置的信息。在这种情况下,应该使用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/.
参见
参考文献
- ^ Richardson, Leonard. RESTful Web Services. Sebastopol: O'Reilly. 2007: 228–230. ISBN 978-0-596-52926-0.
- ^ Location. Hypertext Transfer Protocol -- HTTP/1.1. IETF. June 1999: sec. 14.30. RFC 2616.
- ^ IETF HTTPbis Working Group Ticket 185. [2017-06-30]. (原始内容存档于2016-10-13).
- ^ Location. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. IETF. June 2014: sec. 7.1.2. RFC 7231.
- ^ Uniform Resource Identifier (URI): Generic Syntax. IETF. January 2005. RFC 3986.
- ^ IANA Uniform Resource Identifer (URI) Schemes. [2014-11-21]. (原始内容存档于2010-08-24).