静态资源(图片/音乐等)Provisional headers are shown

今天遇到一个问题:

在html页面里,<a href=url>存储在百度的图片放到网页里打不开,是403.

报错:Provisional headers are shown

这个错误我见过多次,但是每次原因都不一样,是比较坑壁的错误提示。

我先单独将图片url拉出来,放到浏览器地址栏里,发现图片是可以显示的。

那么就可以确定是请求头的问题了。

于是使用postman一步步替换请求头,看是哪个请求头让图片无法显示。

最终定位到了

Referer:http://localhost:9030/front/art/sfz/findInfo.html?id=134

是Referer引起的问题。

 

Referer是http的一个规范,它的值是当前页面url,它在某些情况下(比如静态资源访问,比如超链接)默认会携带着参数去请求资源,目的是向服务器表名我的身份,我从哪里来请求的。

有的服务器不希望自己的资源被其他网站外链,就会校验Referer,如果不是自己家的就拦截掉。

有的请求者不希望暴露自己的隐私Referer,或者想定制Referer,那么便可以修改。

有一个标签属性就可以用的到,rel="noreferrer",这个属性只有<a><form><area>三个才有。如果加入这个属性,就不会再携带Referer了。但这个只是单个标签,你可以详细了解Referer-Policy这个对象以及策略。

最后附上让整个页面都不携带referer方法:

<meta name="referrer" content="no-referrer">

 

关于referer的详细博客:http://www.ruanyifeng.com/blog/2019/06/http-referer.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章