A user account is required in order to edit this wiki, but we've had to disable public user registrations due to spam.

To request an account, ask an autoconfirmed user on Chat (such as one of these permanent autoconfirmed members).

Meta referrer: Difference between revisions

From WHATWG Wiki
Jump to navigation Jump to search
Line 21: Line 21:
A blog hosted over HTTPS might wish to link to a blog hosted over HTTP and receive [http://en.wikipedia.org/wiki/Trackback trackback] links.
A blog hosted over HTTPS might wish to link to a blog hosted over HTTP and receive [http://en.wikipedia.org/wiki/Trackback trackback] links.


===Capability Discipline===
===Object-Capability Discipline===


Some web applications wish to follow an object-capability discipline.  The <code>Referer</code> header constitutes an ambient authority, contrary to an object-capability discipline.  Having the ability to disable the <code>Referer</code> header makes it easier for these web applications to follow this discipline.
Some web applications wish to follow an object-capability discipline.  The <code>Referer</code> header constitutes an ambient authority, contrary to an object-capability discipline.  Having the ability to disable the <code>Referer</code> header makes it easier for these web applications to follow this discipline.

Revision as of 07:21, 26 October 2011

Overview

This document describes a proposal the "referrer" metadata name. Using the referrer metadata attribute, a document can control the behavior if the Referer HTTP header attached to requests that originate from the document.

Use Cases

An author might wish to control the Referer header omitted by a document for a number of reasons.

Privacy

A social networking site has a profile page for each of its users, and users add hyperlinks from their profile page to their favorite bands. The social networking site might not wish to leak the user's profile URL to the band web sites when other users follow those hyperlinks (because the profile URLs might reveal the identity of the owner of the profile).

Some social networking sites, however, might wish to inform the band web sites that the links originated from the social networking site but not reveal which specific user's profile contained the links.

Security

A web application uses HTTPS and a URL-based session identifier. The web application might wish to link to HTTPS resources on other web sites without leaking the user's session identifier in the URL.

Trackback

A blog hosted over HTTPS might wish to link to a blog hosted over HTTP and receive trackback links.

Object-Capability Discipline

Some web applications wish to follow an object-capability discipline. The Referer header constitutes an ambient authority, contrary to an object-capability discipline. Having the ability to disable the Referer header makes it easier for these web applications to follow this discipline.

Specification

Keyword: referrer

The referrer metadata attribute can have one of four values for its content attribute:

  • never
  • always
  • origin
  • default

When a meta element is inserted into the document, if its name attribute is presents and matches the referrer metadata name, then the user agent must run the following algorithm:

  1. If the document already has a referrer-policy, abort these steps.
  2. If the meta element lacks a content attribute, abort these steps.
  3. Let the document's referrer-policy be the value of the content attribute converted to lower case with leading and trailing LWS removed.
  4. If the document's referrer-policy is not one of the strings listed above, replace the document's referrer-policy with the string default.

Replace Step 3 of Fetching resources in the HTML standard [HTML] with the following text:

Let the referrer-header-value be the document's current address of document.

Remove any <fragment> component from the referrer-header-value.

If the origin of the appropriate Document is not a scheme/host/port tuple, then replace the referrer-header-value with the empty string, regardless of its value.

  • If the referrer-policy is never:
Replace the referrer-header-value with the empty string, regardless of its value.
  • If the referrer-policy is default:
Replace the referrer-header-value with the empty string if the <scheme> component of the referrer-header-value represents a protocol that uses transport-layer security and the <scheme> component of the resource being fetched does not.
  • If the referrer-policy is origin:
Replace the referrer-header-value with the ASCII serialization [ORIGIN] of the origin' of the appropriate Document.
  • If the referrer-policy is always:
Do not alter the referrer-header-value. Note: This might cause https referrers to be sent over the network as part of unencrypted HTTP requests.

In Step 5 of Fetching resources in the HTML standard [HTML], replace the text "For the purposes of the Referer (sic) header, [...]" with the following text:

For the purposes of the Referer (sic) header, use the referrer-header-value are generated in Step 3.

Examples

This meta element instructs the user agent to omit the Referer header in all HTTP requests that originate from the document containing the element:

<meta name="referrer" content="never">

This meta element instructs the user agent to include the document's origin in the Referer header rather than the full URL of the document:

<meta name="referrer" content="origin">

Note: The user agent will include the origin string in the Referer header even for links from HTTPS to HTTP resources.