解决方案(之一)
在页面中加入
<meta name="referrer" content="no-referrer" />
原因
- HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。
- 当图片浏览器上可以直接访问,但是在img上报404,可能是由于服务器利用Referer设置了防外链,以上代码可以取消发送Referer,使防外链失效
扩展
-
referrer值的设置
no-referrer-when-downgrade
默认值,当https到http的请求不会发送Referer
no-referrer
不发送Referer
same-origin
同源的请求,会发送Referer
origin
会发送,但是只发送协议和域名信息
strict-origin
安全级别下降时不发送 referrer;安全级别未下降时发送源信息。相当于 origin 加 no-referrer-when-downgrade
origin-when-cross-origin
同源的请求,会发送Referer,不同源的情况下,只发送协议和域名信息
strict-origin-when-cross-origin
同源的请求,会发送Referer,https到http的请求不会发送Referer,其他时候,只发送源信息
unsafe-url
任何时候都发送Referer -
设置方法
通过 http 响应头中的 Referrer-Policy 字段
通过 <meta> 标签,name 为 referrer
通过<a> 、<area>、<img>、<iframe>、<link>元素的 referrerpolicy 属性。 -
注意
no-referrer
是最省事同时也是最不安全的模式,可能会导致SEO失效,以及源站的资源或服务访问失败