HTTP Location
外观
HTTP/HTTPS |
---|
版本 |
请求方法 |
报文主体 |
頭欄位 |
狀態碼 |
相关主题 |
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).