项目中将图片上传到oss服务器上,展示时通过img标签作展示时发现展示不出来,控制台查看发现图片响应403,但是赋值图片链接直接在浏览器打开看是可以正常展示的。
网上搜索的结果img标签src引用网络图片响应403是因为网络安全问题,给的方案是在html的head标签中加上:
<meta name="referrer" content="no-referrer" /> <!--可以让img标签预加载网络图片-->
到此图片可以正常展示了
深刻学习后了解到是因为防盗链的原因导致的,当浏览器向服务器发送请求时,会默认带上将Referer携带在请求头了,Referer是HTTP请求头的一个字段,包含了当前请求页面的来源页面的地址,通过该字段,我们可以检测访客是从哪里来的。通过Referer,我们可以判断请求的来源,从而决定服务器是否正常返回请求资源.
既然如此,如果把referer隐藏掉,也可以绕开部分站点防盗链的限制
一般有下面几种设置Referer策略的方式:
- 通过 http 响应头中的 Referrer-Policy 字段
- 通过 meta 标签,name 为 referrer
- 通过a、area、img、iframe、link元素的 referrerpolicy 属性。
- 通过a、area、link元素的 rel=noreferrer 属性。
之前查的资料通过meta标签来控制隐藏Referer,此时全部请求都会隐藏请求头中的Referer,不太可取。我这里只需通过添加img标签的referrerpolicy 属性来达到目的:
<img src="http://xxx.xxx.png" referrerPolicy="no-referrer" alt="">