HTTP location

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.

The HTTP Location header field is returned in responses from an HTTP server under two circumstances:

  1. To ask a web browser to load a different web page (URL redirection). 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;
    • Moved permanently; or
    • Processed a request, e.g. a POSTed form, and is providing the result of that request at a different URI
  2. 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]

An obsolete version of the HTTP 1.1 specifications (IETF RFC 2616) required a complete absolute URI for redirection.[2] The IETF HTTP working group found that the most popular web browsers tolerate the passing of a relative URL[3] and, consequently, the updated HTTP 1.1 specifications (IETF RFC 7231) relaxed the original constraint, allowing the use of relative URLs in Location headers.[4]

Examples

Absolute URL example

Absolute URLs are URLs that start with a scheme[5] (e.g., http:, https:, telnet:, mailto:)[6] and conform 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".

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

Relative URLs are URLs that do not include a scheme or a host. In order to be understood they must be combined with the URL of the original request.

Client request for http://www.example.com/blog:

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

Server response:

HTTP/1.1 302 Found
Location: /articles/

The URL of the location is expanded by the client to http://www.example.com/articles/.

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. "Location". Hypertext Transfer Protocol -- HTTP/1.1. IETF. June 1999. sec. 14.30. RFC 2616. https://tools.ietf.org/html/rfc2616#section-14.30. 
  3. IETF HTTPbis Working Group Ticket 185
  4. "Location". Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. IETF. June 2014. sec. 7.1.2. RFC 7231. https://tools.ietf.org/html/rfc7231#section-7.1.2. 
  5. Uniform Resource Identifier (URI): Generic Syntax. IETF. January 2005. RFC 3986. https://tools.ietf.org/html/rfc3986. 
  6. Lua error in package.lua at line 80: module 'strict' not found.