在接入微信h5支付遇到了referrer为空的问题以后,也看过不少博主整理的相关文档,而后仍是本身简单整理一下,加深一下理解。html
Referer 首部包含了当前请求页面的来源页面的地址,即表示当前页面是经过此来源页面里的连接进入的。服务端通常使用 Referer 首部识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等chrome
在一个不火热的旅游景点(很优美没有过分开发的那种)开了个客栈,有一个很无聊的老板,当有游客入住的时候,都会问 场景一:浏览器
场景二:缓存
referrer 是否发送,在chrome默认的行为里面是会带的(除了是新标签直接访问页面),这样会带来一个问题安全
<img src="data:" />
配置 referrer-polictybash
属性值 | 描述 |
---|---|
no-referrer | 不发送referrer |
no-referrer-when-downgrage | 安全等级降级的时候不发,例如https->http |
origin | 只发送“源” |
origin-when-cross-origin | 非同源只发送“源”,同源访问发送具体的url |
same-origin | 同源访问发送具体url |
strict-origin | 同等安全等级的页面访问才发url |
strict-origin-when-cross-origin | 同等安全等级且同源的状况下才发送url |
unsafe-url | 不管是同源请求仍是非同源请求都发送完整的url |
配置的地方微信
例如:
<a href=“xxx.com” referrerpolicy=“origin” />
或者
<a href=“xxx.com” rel=“noreferrer” /> 这个时候跳转后,页面http里面的信息的referer就为空
复制代码
<meta name=“referrer” conent=“origin” /> 这个时候,referer只会显示origin
复制代码
1.匿名优化
有时候匿名者不但愿被知道本身的身份,会主动从http报文中删除ua,ip,referer来保证私密性跟匿名性,网站
2.根据referer去作对应的处理url
3.防护 CSRF(跨站请求伪造)
注意:看到上面其实有referer,也有referrer,referer 是错误的写法,正确的写法是referrer。http header 里面仍是referer属性,没有修正。其余的才修正了写法。