【问题解决】阿里云oss报403AccessDenied拒绝访问错误
因为jsdelivr挂了所以就打算把我博客外链换成我自己的cdn,换完之后发现博客一片白,资源一个都访问不了。

第一个坑
因为我是aliyun的oss+cdn方案,所以就想应该是防盗链的问题,于是就打算改一下oss和referer的防盗链。这时候第一个坑来了。
首先阿里云oss和cdn的防盗链规则写法不一致,可以参考这一篇。


可以看到oss的写法是必须要指明referer的协议是https还是http,如果没有指明则默认为http协议,而cdn则不需要,因此如果文件是https协议访问的话就会出现oss资源无法访问的情况。
所以如果资源是https访问一定要在oss防盗链指设置中指明https协议,如http://tnxts.com。
而cdn的防盗链设置中就不需要。

第二个坑
第二个坑就是,oss中*.xxx.com是匹配不到一级域名的,比如我的博客是https://tnxts.com,是使用的一级域名。因此如果我的oss中防盗链设置只写了https://*.tnxts.com,那么我的博客是无法通过防盗链的。必须要再加一个https://tnxts.com才可以。

但是cdn是可以用*.tnxts.com匹配到tnxts.com的,这就导致了我在博客里一会儿能看到我的资源(CDN缓存)一会儿无法看到我的资源,导致这个问题困扰我很久,不过通过不断的尝试还是解决了。
总结
出现资源无法访问问题大概率是防盗链的原因,也有可能是请求头的问题,一定要搞清楚防盗链的编写规则,阿里云这一套两个防盗链规则写法不一致确实是给我搞蒙了,也怪我之前没有搞清楚。总之就是一定要敢于尝试,多尝试不同的解决方法,碰着碰着就可能对了。😋

浙公网安备 33010602011771号