什么是Referer?html
Referer是HTTP请求头信息里面的一个常见字段,它提供了访问来源的信息。好比说,在某网站上看到一个广告并点了进去,那么我就可能会在HTTP 协议在请求(request)的头信息里面看到Referer这一字段给出“引荐网页”的URL,让人知道咱们是经过“某网站”进入的这个广告页。浏览器
Referer存在的条件服务器
在浏览器向服务器请求资源的时候,Referer字段并非老是存在的,其中在如下几种状况中会发送Referer字段。post
1.点击网页上的链接网站
2.提交表单(post或get)url
3.网页加载静态资源,好比加载图片、脚本、样式(js的script标签及html中img标签的src属性)。spa
如下是几种获取不到Referer的几种状况.net
1.直接在浏览器内输入URLhtm
2.经过浏览器内的书签或收藏blog
3.第三方软件内容中的链接(如Word,Excel等)
4.从HTTPS的网站跳转到HTTP的网站或SSL认证网站跳入
那么Referer有什么做用呢?
1.经过Referer咱们能够知道访问来源的信息,因此能够用来作一些网站流量的来路统计
2.防止图片盗链,当咱们不但愿自家网站图片外链被其余网站加载时,就能够基于Referer字段来实现,能够经过判断该字段是不是自家URL或者是属于白名单里的URL若是是则放行容许加载。
3.在某些情境下咱们不但愿暴露当前的原始网址,好比一个社交网站会有每一个用户的简介页面,用户会在他们的我的主页中添加一些连接。社交网站可能不但愿泄露用户的我的主页URL给被连接的网站(由于我的主页URL可能会泄露其主人的身份信息)。
一些社交网站可能想通知其余网站该连接是从社交网站发起的,但不想泄露包含用户信息的连接(例如,微博中的连接但愿告诉对方该连接是在微博中链接过来的,但不但愿告诉对方从谁的微博链接过来)。
referrer策略
Referrer策略包含如下值:
Referrer策略能够经过如下方法声明:
1.经过http请求头中的Referrer-Policy字段,例:Referrer-Policy: no-referrer
2.经过meta标签,name为referrer,例:<meta name=”referrer” content=”no-referrer” />
3.经过<a>、<area>、<img>、<iframe>、<link>元素的referrerpolicy属性。例:<a href=“http://example.com” referrerpolicy=“origin”>
4.经过<a>、<area><link>元素的rel=noreferrer属性,例:<a href='http://example.com' rel="noreferrer" target="_blank">test</a>
5.经过隐式继承
注意事项
Referrer策略还有其余历史遗留的值:
1.never等价于no-referrer
2.default等价于no-referrer-when-downgrade
3.always等价于unsafe-url
4.不建议使用上面三个值,建议使用后面的新值
兼容性
IE:不支持(IE高版本中隐式支持default,https页面拉取的http资源不会加referrer)
Edge:仅支持较早版本的值(never、always、origin、default)
Firefox:36+
Chrome:21+
Safari:7.1+(仅支持较早版本的4个值)
Opera:15+
iOS Safari:8+(仅支持较早版本的4个值)
参考:
http://www.ruanyifeng.com/blog/2019/06/http-referer.html
https://blog.lyz810.com/article/2016/08/referrer-policy-and-anti-leech/