网页中添加了其他网站上的图片链接,这个图片设置了防盗链的图片后,访问报403解决办法

碰到的问题

网页中添加了其他网站上的图片链接,这个图片设置了防盗链的图片后,访问报403

防盗链基本实现说明

主要是通过验证referer中记录的接口请求来源来验证网站有没有权限访问该图片资源,如果没权限在则返回403无权限访问

分析

经排查测试,发现一般大多数网站中图片的防盗链都是只屏蔽了不在白名单中的referer,但是没有屏蔽referer为空的请求

解决办法

在网页的<head>标签中添加<meta name="referrer" content="no-referrer"/>,意思是设置从此页面发出的请求(包括请求图片等资源文件)不设置referer请求来源
网页中添加了其他网站上的图片链接,这个图片设置了防盗链的图片后,访问报403解决办法

Referrer简介

Referrer网站来路,访问者进入网站任何途径。HTTP Refererheader的一部分,当浏览器向web服务器发出请求的时候,一般会带上Referer,告诉服务器用户从那个页面连接过来的,服务器藉此可以获得一些信息用语处理。

作用

判断网站来源,可以相应的做一些校验,比如只允许某网站的请求,那么就可以通过获取referer,加以判断即可。

可设置的参数

参数 说明
空字符串 按照浏览器的默认值执行。默认值为 no-referrer-when-downgrade。部分标签可重定义此安全策略
no-referrer 不传递 Referrer 报头的值
no-referrer-when-downgrade 当发生降级(比如从 https:// 跳转到 http:// )时,不传递 Referrer 报头。但是反过来的话不受影响。通常也会当作浏览器的默认安全策略
same-origin 同源,即当协议、域名和端口(如果有一方指定的话)都相同,才会传递 Referrer
origin 将当前页面过滤掉参数及路径部分,仅将协议、域名和端口(如果有的话)当作 Referrer
strict-origin 类似于 origin,但是不能降级。
origin-when-cross-origin 跨域时(协议、域名和端口只有一个不同)和 origin 模式相同,否则 Referrer 还是传递当前页的全路径。
strict-origin-when-cross-origin origin-when-cross-origin 类似,但不能降级。
unsafe-url 任意情况下,都发送当前页的全部地址到 Referrer,最宽松和不安全的策略。

了解Referrer详细内容可以参靠此篇博客

上一篇:javascript document.referrer 用法


下一篇:javascript iframe链接引荐来源