【问题解决】阿里云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缓存)一会儿无法看到我的资源,导致这个问题困扰我很久,不过通过不断的尝试还是解决了。
总结
出现资源无法访问问题大概率是防盗链的原因,也有可能是请求头的问题,一定要搞清楚防盗链的编写规则,阿里云这一套两个防盗链规则写法不一致确实是给我搞蒙了,也怪我之前没有搞清楚。总之就是一定要敢于尝试,多尝试不同的解决方法,碰着碰着就可能对了。😋
本文作者:Texley
本文链接:https://www.cnblogs.com/texley/p/16293808.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步