Http的referer与referrer-policy理解

646 阅读2分钟

Referer

请求头包含当前请求页面的来源页面地址,主要用于站点统计,日志记录,缓存优化处理。

有两种情况,Referer不会被发送:

  1. 来源页面采用的协议为表示本地文件的 "file" 或者 "data" URI;
  2. 当前请求页面采用的是非安全协议,而来源页面采用的是安全协议(HTTPS)。

Referrer-Policy

http头部用来监管哪些访问来源信息会在Referer中发送,应该被包含在生成的请求当中。

Referrer Policy 可以设定8个值:

  1. no-referrer: 整个Referer首部会被移除。访问来源信息不随着请求一起发送。
  2. no-referrer-when-downgrade (默认值): 在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别的情况下,引用页面的地址会被发送(HTTPS->HTTPS),但是在降级的情况下不会被发送 (HTTPS->HTTP)。
  3. origin: 在任何情况下,仅发送文件的源作为引用地址。例如 example.com/page.html 会将 example.com/ 作为引用地址。
  4. origin-when-cross-origin: 对于同源的请求,会发送完整的URL作为引用地址,但是对于非同源请求仅发送文件的源。
  5. some-origin: 对于同源的请求会发送引用地址,但是对于非同源请求则不发送引用地址信息。
  6. stict-orign: 在同等安全级别的情况下,发送文件的源作为引用地址(HTTPS->HTTPS),但是在降级的情况下不会发送 (HTTPS->HTTP)。
  7. strict-origin-when-cross-origin: 对于同源的请求,会发送完整的URL作为引用地址;在同等安全级别的情况下,发送文件的源作为引用地址(HTTPS->HTTPS);在降级的情况下不发送此首部 (HTTPS->HTTP)。
  8. unsafe-url: 无论是同源请求还是非同源请求,都发送完整的 URL(移除参数信息之后)作为引用地址。

详情:

Reffer-policy.png

Referrer-Policy用法

  1. http头信息:服务器发送网页的时候,通过 HTTP 头信息的Referrer-Policy告诉browser。
    Referrer-Policy: origin
  2. 标签:在网面头部设置
  <meta name="referrer" content="origin" />
  1. referrerPolicy属性: a, area, img, iframe, link标签,可以设置referrerpolicy 属性。
<a href="..." referrerpolicy="origin" target="_blank" >xxx</a>

参考文档:developer.mozilla.org/zh-CN/docs/…