HTTP 请求头部 referer
原文地址:https://www.sojson.com/blog/58.html
HTTP 请求头部 referer
概述
referer 是 HTTP 请求头部的一部分。当浏览器(或者模拟浏览器行为)向web
服务器发送请求的时候,头信息里有包含 Referer 。Referer的的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源,如:直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer 字段的,因为这是一个“凭空产生”的 HTTP 请求,并不是从一个地方链接过去的。服务器允许 Referer 为空,意味着服务器允许浏览器直接访问。
注:
referer 的正确英语拼法是 referrer 。由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一。还有它第一个字母是大写。
一、Referer
1.防盗链
Referer=https://www.sojson.com
注:设置 Referer 限制访问资源的域名,资源服务器每次取到 Referer 来判断一下是不限定的域名:https://www.sojson.com。如果是就继续访问,不是就拦截。
2.防止恶意请求。
比如SOJSON网站上,静态请求是*.html
结尾的,动态请求是*.shtml
,那么由此可以这么用,所有的*.shtml
请求,必须 Referer 为限定网站。
Referer=https://www.sojson.com
3、Referer
服务器可以拒绝空referer的请求
4、页面添加Referer元素需要使用meta referrer标签
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">