HTTP location
HTTP |
---|
![]() |
Request methods |
Header fields |
Response status codes |
Security access control methods |
Security vulnerabilities |
The HTTP Location header field is returned in responses from an HTTP server under two circumstances:
- To ask a web browser to load a different web page. In this circumstance, the Location header should be sent with an HTTP status code of 3xx. It is passed as part of the response by a web server when the requested URI has:
- Moved temporarily, or
- Moved permanently
- To provide information about the location of a newly created resource. In this circumstance, the Location header should be sent with an HTTP status code of 201 or 202.[1]
While the internet standard RFC 2616 (HTTP 1.1) requires a complete absolute URI for redirection,[2] the most popular web browsers tolerate the passing of a relative URL as the value for a Location header.[citation needed] Consequently, the upcoming revision of HTTP/1.1 will make relative URLs conforming.[3]
Examples
Absolute URL example
The internet standard requires an absolute URI to follow a Location header, which means it must contain a scheme[4] (e.g., http:, https:, telnet:, mailto:)[5] and conforms to scheme-specific syntax and semantics. For example, the HTTP scheme-specific syntax and semantics for HTTP URLs requires a "host" (web server address) and "absolute path", with optional components of "port" and "query". In the case that there is no absolute path present, it must be given as "/" when used as a request URI for a resource.[6]
Client request:
GET /index.html HTTP/1.1 Host: www.example.com
Server response:
HTTP/1.1 302 Found Location: http://www.example.org/index.php
Relative URL example
This example, is incorrect according to the current standard, which specifies the URI returned to be absolute.[7] However, all popular browsers will accept a relative URL[citation needed], and it is correct according to the upcoming revision of HTTP/1.1.[8]
Client request:
GET /blog HTTP/1.1 Host: www.example.com
Server response:
HTTP/1.1 302 Found Location: /blog/
See also
References
- ^ Richardson, Leonard (2007). RESTful Web Services. Sebastopol: O'Reilly. pp. 228–230. ISBN 978-0-596-52926-0.
- ^ RFC 2616 (HTTP 1.1)
- ^ What are the Consequences for using Relative Location Headers?
- ^ RFC 3305 (URIs, URLs, and URNs)
- ^ IANA Uniform Resource Identifer (URI) Schemes
- ^ RFC 2616 Section 3.2.2 (HTTP URL)
- ^ RFC 2616 Section 14.30 (Location)
- ^ draft-ietf-httpbis-p2-semantics-26 Section 7.1.2 (Location)