当因为header被js域名屏蔽时,你能这样做

今天在上一个网站的时候发现页面图片一直加载不出来,一直是正在加载中的状态,当时以为是网络原因于是进行了网络切换,结果发现问题依旧,这就很奇怪了,平时这个网站好好地没啥问题,怎么就突然这样了?于是打开调试器查看页面加载详情,最终定位到了两个加载失败的js文件一个叫jquery.autocomplete.min.js、jquery.lazyload.min.js,非常奇怪,平时好好地怎么突然今天就403了??并且更奇怪的是使用wget明明是可以正常下载下来的啊?

难道是我被封了?不对啊,我用wget是可以下载的。使用浏览器打开连接,也是可以打开js文件内容的!这就很奇怪了!百思不得其解的时候灵光一现,我可以把js文件下载下来,然后放在本机的nginx服务器,然后通过域名可以伪装一下达成加载成功的效果,但是当我查看js详细location的时候发现,域名是HTTPS的。。。卒!

那就没办法了,于是尝试通过在页面console执行js文件代码尝试解决这个问题,依然卒。。。

还是别瞎试了,老老实实找原因吧,之后通过右击请求copy curl的方式将请求复制出来,通过curl请求发现403!!!问题复现了!!可是我刚才用wget明明是好的啊!!于是我仔细看了下请求,发现页面请求js的时候带有Referer!!上网搜了一下,发现确实会有js cdn将个人网站和小众域名的Referer给屏蔽掉,于是就产生了刚才的情况!这不是多此一举吗。。。

找到了问题,之后又无意间发现了临时解决方案:我们知道,浏览器在加载页面的时候是可以加载缓存的!我们只要将需要的两个js文件加载到缓存即可!并且我们也已经知道,只要我请求js的时候不带有Referer就是可以下载下来的!于是使用浏览器新建两个tab页面分别打开js链接,再刷新原来的问题页面!!!页面正常显示了!!!同时,查看请求详情发现,js文件确实是从Cache当中加载的!完美!!

转载请注明来源链接 http://just4fun.im/2018/12/10/when-banned-by-cdn-because-of-referer/ 尊重知识,谢谢:)