参考文章:
https://h5jun.com/post/everything-you-could-ever-want-to-know-and-more-about-controlling-the-referer-header-fastmail-blog.html
http://www.ruanyifeng.com/blog/2019/06/http-referer.html
什么是referer
请求头字段允许由客户端指定资源的 URI 来自于哪一个请求地址。
作用
- 让服务器能够拿到请求资源的来源,可以用于分析用户的兴趣爱好、收集日志、优化缓存等等。
- 让服务器能够发现过时的和错误的链接并及时维护。
- 检查 Referer 头阻止跨站请求伪造。
安全角度
保密 URL: 包含一个随机或者加密签名的 token。
保密 URL 经常被用来替代 cookies 保证只有合法的用户才能访问到内容,当用户跳转时根据referer判断是否合法。
对于一个网站来说,由于涉及隐私和安全问题,防止 referrer 泄漏很重要。
怎么设置referer
rel属性
为一个单独的链接移除 referrer
HTML5 设置 rel 属性 noreferrer。当这个属性被添加上之后,用户请求该链接资源时,浏览器不设置 Referer 头
<a href="..." rel="noreferrer" target="_blank"> has the same behavior as <a href="..." rel="noreferrer noopener" target="_blank">.
Referrer Policy
取值
- 空字符串:默认按照浏览器的机制设置referrer的内容,默认情况下是和no-referrer-when-downgrade设置得一样。
- “no-referrer”:不显示referrer的任何信息在请求头中。
- “no-referrer-when-downgrade”:默认值。当从https网站跳转到http网站或者请求其资源时(安全降级HTTPS→HTTP),不显示referrer的信息,其他情况(安全同级HTTPS→HTTPS,或者HTTP→HTTP)则在referrer中显示完整的源网站的URL信息。
- “same-origin”:浏览器只会显示referrer信息给同源网站,并且是完整的URL信息。所谓同源网站,是协议、域名、端口都相同的网站。
- “origin”:浏览器在referrer字段中只显示源网站的源地址(即协议、域名、端口),而不包括完整的路径。
- “strict-origin”:和origin策略相似,只是不允许referrer信息显示在从https网站到http网站的请求中(安全降级)。
- “origin-when-cross-origin”:当发请求给同源网站时,浏览器会在referrer中显示完整的URL信息,发个非同源网站时,则只显示源地址(协议、域名、端口)。
- “strict-origin-when-cross-origin”:和origin-when-cross-origin相似,只是不允许referrer信息显示在从https网站到http网站的请求中(安全降级)。
- “unsafe-url”:浏览器总是会将完整的URL信息显示在referrer字段中,无论请求发给任何网站。不建议
- 为整个网页的每个链接移除 referrer
<meta name="referrer">
- 通过Referrer-Policy HTTP header设置:
服务器发送网页的时候,通过 HTTP 头信息的Referrer-Policy告诉浏览器
- 给
<a>
,<area>
,<img>
,<iframe>
, 或者<link>
元素设置referrerpolicy属性<a href="http://example.com" referrerpolicy="origin">
- 可以给
<a>
,<area>
,<link>
元素设置rel的链接关系。<a href="http://example.com" rel="noreferrer">
怎么更改referer呢
首先你要有个chrome浏览器
然后你要学会翻墙
哈哈哈哈哈哈哈😄
chrome浏览器下载插件:referer control
123.baidu.com的referer就被设置成http://456.baidu.com啦~