访问图片资源403问题(http referrer)

通过img标签引入一个图片地址,报403。但是这个图片地址直接复制出来在地址栏打开,却是看得到的。

解决方法

在html中的head标签里加入<meta name="referrer" content="no-referrer" />即可。

原理:

http请求体的header中有一个referrer字段,用来表示发起http请求的源地址信息,服务器端在拿到这个referrer值后就可以进行相关的处理,比如图片资源,可以通过referrer值判断请求是否来自本站,若不是则返回403或者重定向返回其他信息,从而实现图片的防盗链。上面出现403就是因为,请求的是别人服务器上的资源,但把自己的referrer信息带过去了,被对方服务器拦截返回了403。

在前端可以通过meta来设置referrer policy(来源策略)。所以针对上面的403情况的解决方法,就是把referrer设置成no-referrer,这样发送请求不会带上referrer信息,对方服务器也就无法拦截了。

浏览器中referrer默认的值是no-referrer-when-downgrade,就是除了降级请求的情况以外都会带上referrer信息。降级请求是指https协议的地址去请求http协议,所以上面403的情况还有另一种解决方法就是,请求的图片地址换成http协议,自己的地址使用http协议,这样降级请求也不会带上referrer。

发布了12 篇原创文章 · 获赞 3 · 访问量 3503

猜你喜欢

转载自blog.csdn.net/qq_42708127/article/details/104422498