Referer 介绍
参考文章:https://www.jianshu.com/p/1a6abab212ed
本文基于参考文章,阅读完之后再自己总结。主要介绍的是HTTP中的 Referer字段的作用以及它的特性
什么是 Referer
Referer 是 HTTP 字段中的一部分。当浏览器向服务器发起请求的时候,请求头一般需要携带Referer字段。而该字段的值为发起请求的页面链接。而服务器可以根据链接获取到一些需要的信息。
Referer 的作用
防盗链
服务器可以只允许网站访问自己的静态资源,每次请求进来,服务器都会判断一下Referer的值。是否符合,符合则继续访问,否则就拦截
防止恶意请求
比如静态请求是.html结尾。而动态请求是.shtml结尾。那么只要文件是*.shtml,都必须让他的Referer是自己的网站才允许请求
Referer 的一些其他情况
Referer为空的是什么原因
因为Referer是指示一个请求是从哪里链接过来。那么如果我们直接从url中输入(即请求不是由链接触发产生的),发起的请求,Referer的值就会为空。因为直接在url上输入的请求是一个凭空产生的HTTP请求,并不是从一个地方链接过去的
在设置防盗链中,允许Referer为空的含义
允许Referer为空的含义就是,意味着你允许比如浏览器直接方位。
页面添加Referer元素,需要使用 meta referer 标签
1、None:绝不允许referrer data通过
标签写法:<meta name="referrer" content="none">
2、None When Downgrade:发送referrer信息去安全的HTTPS站点,而非不稳定的HTTP站点。
标签写法:<meta name="referrer" content="none-when-downgrade">
3、Origin Only: 发送协议、主机和端口(即子域)没有一个完整的URL作为来源,
即https://moz.com/example.html只会发送https://moz.com
标签写法:<meta name="referrer" content="origin">
4、Origin When Cross-Origin: 当传origin-only来路信息发送给外部站点时,如果目标有相同的协议、主机和端口(即子域),无论它是HTTP或HTTPS,都将全部的URL作为Referrer发送出去。(注解:官方说明书上有一处排印错误,将来的版本应该是"origin-when-cross-origin")
标签写法:<meta name="referrer" content="origin-when-crossorigin">
5、Unsafe URL: 总是将URL字串作为一个referrer通过。
注意:如果你的URL中存在任何敏感信息,这不是最安全的选择。其中URL的片段、用户名、密码被自动剥去。
标签写法:<meta name="referrer" content="unsafe-url">
以上