防盗链图⽚在html中正常显⽰的⽅法
如果你也曾复制过⼀些类似腾讯、百度等各⼤⽹站的⽂章,你会发现黏贴下来发表之后经常出现图⽚⽆法显⽰,这是怎么出现的呢?
例如:
<body>
<img src="hweb/2017/0106/1483690985396.jpg" />
</body>
1
解决⽅案
使⽤Referer Meta标签控制referer,在H5 的 header加⼊meta
<meta name="referrer"content="never">
1
即可实现!
____________如果想详细点,看下⾯介绍:________________
接下来,你就应该知道 HTTP_REFERER
HTTP_REFERER介绍
福建铁观音HTTP Referer是header的⼀部分,当浏览器向web服务器发送请求的时候,⼀般会带上Referer,告诉服务器我是从哪个页⾯链接过来的,服务器基此可以获得⼀些信息⽤于处理。
简介
简⽽⾔之,HTTP Referer是header的⼀部分,当浏览器向web服务器发送请求的时候,⼀般会带上Referer,告诉服务器我是从哪个页⾯链接过来的,通常被⽹站⽤来统计⽤户来源,是从搜索页⾯来的,
还是从其他⽹站链接过来,或是从书签等访问,以便⽹站合理定位,服务器藉此可以获得⼀些信息⽤于处理。⽐如从我主页上链接到⼀个朋友那⾥,他的服务器就能够从HTTP Referer中统计出每天有多少⽤户点击我主页上的链接访问他的⽹站。
Referer有时也被⽤作防盗链,即下载时判断来源地址是不是在⽹站域名之内,否则就不能下载或显⽰,很多⽹站,如天涯就是通过Referer页⾯来判断⽤户是否能够下载图⽚。
当然,对于某些恶意⽤户,也可能伪造Referer来获得某些权限,在设计⽹站时要考虑到这个问题。
Referer 还可⽤做电⼦商务⽹站的安全,在提交信⽤卡等重要信息的页⾯⽤referer来判断上⼀页是不是⾃⼰的⽹站,如果不是,可能是⿊客⽤⾃⼰写的⼀个表单,来提交,为了能跳过你上⼀页⾥的的验证等⽬的。
但是,注意不要把Rerferer⽤在⾝份验证或者其他⾮常重要的检查上,因为Rerferer⾮常容易在客户端被改变。
⼀、去除http头部的Referer信息,防⽌重要⽹址被浏览器“偷偷的泄漏”
有时候我们需要在点击链接时候去除http头部的referer属性,⽐如在⽹站后台有链接到外部⽹站的地⽅,若不去除的话很容易暴漏我们的后台地址!
referer是由客户端的浏览器发送到服务器上的,且在客户端可以通过fererrer 来获取,也就是说referer的发送
实际上是⼀个浏览器⾏为,发送与否的决定权实在浏览器⼿⾥。
下⾯⼏种情况下,可以控制浏览器是否发送referer:
酱香型白酒1.
1.
1. 当⽹站使⽤refresh字段进⾏跳转的时候,⼤多数浏览器不发送referer;
2. 从⽤户从⼀个HTTPS的⽹站点击链接到另⼀个HTTP的⽹站时,不发送referer;
2. html5中,a标签的rel = “noreferrer”, 可以让浏览器不发送referer;
3. 使⽤Data URI scheme链接的,浏览器也不发送referer;
4. 使⽤Content Security Policy, 也可以让浏览器不发送referer;
5. 在html头部中使⽤meta标签来控制不让浏览器发送referer;
6. ⽤户⼿输⼊⽹址或是从收藏夹、书签中访问。火影忍者三重罗生门
技术细节
referer 的 metedata 参数可以设置为以下⼏种类型的值:
1. never
2. always
3. origin
4. default
浏览器后续发起 http 请求的时候,会按照 content 的值,做出如下反应(下⾯ referer-policy 的值即 meta 标签中 content 的值):
西藏中考1.如果 referer-policy 的值为never :删除 http head 中的 referer ;
苹果系统2.如果 referer-policy 的值为default :如果当前页⾯使⽤的是 https 协议,⽽正要加载的资源使⽤的是普通的 http 协议,则将 http
header 中的 referer 置为空;
3.如果 referer-policy 的值为 origin :只发送 origin 部分;
4.如果 referer-policy 的值为 always :不改变http header 中的 referer 的值,注意:这种情况下,如果当前页⾯使⽤了 https 协议,⽽要加载的资源使⽤的是 http 协议,加载资源的请求头中也会携带 referer 。
例⼦
1、如果页⾯中包含了如下 meta 标签,所有从当前页⾯中发起的请求将不会携带 referer :
泡鸭爪2、如果页⾯中包含了如下 meta 标签,则从当前页⾯中发起的 http 请求将只携带 origin 部分(注:根据原⽂中的语境,我理解这⾥的 origin 是包含了 schema 和 hostname 的部分 url ,不包含 path 等后⾯的其他 url 部分),⽽不是完整的 URL :
注意:在使⽤本⽂中所述的 meta 标签的时候,浏览器原有的 referer 策略将被打破,⽐如从 http 协议的页⾯跳转到 https 的页⾯的时候,如果设置了适当的值,也会携带 referer 。<meta name ="referrer" content ="never">
1<meta name ="referrer" content ="origin">
1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论