视频地址引用访问外链出现403 forbidden,如下图所示。
解决方案:
头部header里面添加meta属性referrer。
<meta name="referrer" content="no-referrer">
原理解析:
http请求头中有一个referrer字段,用来表示发起http请求的源地址信息
服务器端在拿到这个referrer值后判断请求是否来自本站
若不是则返回403,从而实现图片的防盗链。
上面出现403就是因为,请求的是别人服务器上的资源,但把自己的referrer信息带过去了,被对方服务器拦截返回了403。
在前端可以通过meta来设置referrer policy(来源策略),referrer设置成no-referrer,发送请求不会带上referrer信息,对方服务器也就无法拦截了。
content=“属性值”常见有以下几种:
no-referrer:任何情况下都不发送Referrer信息;
no-referrer-when-downgrade:仅当协议降级(如从HTTPS页面跳转到HTTP页面)时不发送Referrer信息。是大部分浏览器默认策略。
origin:发送只包含host部分的referrer信息,也就是只包含了协议和域名的url,不包含域名后面部分,比如,来源网页url是https://baidu.com/1.html,但referrer值只包含http://www.baidu.com;
origin-when-cross-origin:仅在发生跨域访问时,发送只包含host的Referer信息,但在同域下还是完整的,而只有协议、域名和端口都一致时,浏览器才认为是同域。
unsafe-url:全部都发送Referrer信息,是最宽松,也是最不安全的策略
温馨提示:
1、referrer属性的<meta> 标签需要放在 <head> ...</head> 之间,如果出现的位置不对就会被忽略。
2、如果没有content 属性,或者 content 属性值为空,也会被忽略。
3、如果 content 属性后面的取值不合法,浏览器会自动选择 no-referrer 。