HTTPQUERY
English

Referer

用法

Referer 头部由客户端(浏览器、HTTP 库)发送,用于指明链接到所请求资源的页面或资源的 URL。当用户点击 https://example.re/page 上的一个链接时,浏览器会在随后的请求中通过 Referer 头部发送该链接所在页面的地址。

注意

头部名称 “Referer” 是英文单词 “referrer” 的一个历史性拼写错误。最初的 HTTP 规范引入了这个拼写错误,如今纠正拼写会破坏现有实现。这一拼写错误的形式仍然是该头部的正式名称。

该头部有多种用途。分析系统依赖 referrer 来追踪流量来源。服务器利用其值进行日志记录和访问控制。搜索引擎过去曾使用 referrer 数据来理解页面之间的链接关系。

Referrer-Policy 响应头控制 Referer 头部包含多少信息。策略范围从发送完整 URL(unsafe-url)、只发送源(origin),到完全省略该头部(no-referrer)不等。大多数浏览器默认使用 strict-origin-when-cross-origin,即对同源请求发送完整 URL,对跨源请求只发送源。

在默认策略下,从 HTTPS 页面向 HTTP 页面发起的请求(即降级)不会发送 Referer 头部。片段标识符和凭据从不包含在其值中。

Absolute URL

包含协议、主机、路径和查询字符串的完整 URL。同源请求通常包含完整的 URL。

Referer: https://example.re/articles/http-headers?page=2

Origin only

只有协议和主机,不含路径或查询字符串。在默认浏览器策略下,跨源请求发送此形式。

Referer: https://example.re/

Empty or absent

当 Referrer-Policy 设为 no-referrer、请求来自书签 URL、直接在地址栏输入 URL,或在默认策略下发生 HTTPS 到 HTTP 降级时,该头部会被完全省略。

示例

浏览器从搜索结果页跟随链接时,会将搜索 URL 作为 referrer 发送。收到请求的服务器由此得知访客的来源。

Referer: https://search.example.re/results?q=http+headers

在默认的 strict-origin-when-cross-origin 策略下,来自安全页面的跨源请求只发送源部分。

Referer: https://example.re/

同源加载的资源会在 referrer 值中包含完整的路径和查询字符串。

Referer: https://example.re/docs/guide?section=headers