1.Referer
浏览器会给http请求的请求头Header
加上表示来源的 Referer
字段,例如在a网站www.aaa.com
上点击一个链接跳转到b网站www.bbb.com
,那么访问b网站的http请求的请求头中的Referer
字段的值就是www.aaa.com
,在javascript
中可以通过document.referrer
来获取这个值。在浏览器开发者工具中,可以在console中输入document.referrer
,打印出这个值,也可以network
面板中的Request Headers
中找到Referer
字段的值。
HTTP header 错误地把它拼写成了
Referer
(少了一个r)。。。 其他地方都是正确的单词referrer
2.Referrer Policy
但是Referer
也有成为用户的一个不安全因素,比如有些网站直接将 sessionid
或是 token
放在地址栏里传递的,Referer
会原样不动地把地址传递给第三方网站,所以http请求头中就有了 Referrer Policy
字段,作为 Referrer
字段的安全策略。通过 Referrer Policy
,我们可以针对第三方网站隐藏 Referrer,也可以只发送来源 URL 的 host 部分。
Referrer Policy
的可用值有一下几种:
enum ReferrerPolicy {
"",// 按照浏览器的默认值执行,默认值为 no-referrer-when-downgrade
"no-referrer", // 不传递 Referrer 报头的值
"no-referrer-when-downgrade", //当发生降级(比如从 https跳转到 http)时,不传递 Referrer,浏览器的默认安全策略
"same-origin", //同源,即当协议、域名和端口(如果有一方指定的话)都相同,才会传递 Referrer
"origin", //将当前页面过滤掉参数及路径部分,仅将协议、域名和端口(如果有的话)当作 Referrer
"strict-origin", //类似于 origin,但是不能降级
"origin-when-cross-origin", //跨域时和 origin 模式相同,否则 Referrer 还是传递当前页的全路径。
"strict-origin-when-cross-origin", //与 origin-when-cross-origin 类似,但不能降级
"unsafe-url" //任意情况下,都发送当前页的全部地址到 Referrer,最宽松和不安全的策略
};
网友评论