简介:使用腾讯云CDN加速站点访问后出现403错误,通常情况下可能是由域名配置、CDN 安全策略以及源站响应 403 导致。本文详细介绍了 CDN 常见的引发403错误的问题场景。
1.1 CDN鉴权问题
CDN鉴权问题通常表现在没有带鉴权参数、鉴权过期、鉴权计算错误,需要根据URL的鉴权文档了解鉴权的原理,然后去进一步排查和解决。目前腾讯云控制台提供4种鉴权方式可供选择,具体可以参考文档:https://cloud.tencent.com/document/product/228/41622
1.1.1 CDN开启了鉴权,但是实际访问的url里面没有带鉴权参数,访问会报错403
例如:
这里以typeD鉴权为例进行演示
可以看出不带鉴权参数访问会直接返回403
1.1.2 鉴权参数过期
CDN开了鉴权,并且url带了鉴权参数,但是鉴权参数过期,那么会返回一个error为1的错误码
例如:
这就表示鉴权参数过期了,需要重新计算时间戳啦。
1.1.3鉴权参数的MD5计算不正确
若带了参数的url,但是MD5校验不正确,也是会返回403的,同时会有一个error为-5的错误码
例如:
通过返回的错误码即可快速判断403问题所在啦
注意:设置鉴权的有效时间说明
当设置为0时,表示当前时间过期
例如,鉴权参数带的时间戳为1605247592表示2020/11/13 14:06:32 ,当本地时间到达这个时间时,那边该参数即过期
反之,若设置为2200,则表示1605247592该时间往后的2200秒内鉴权有效,超过了2200秒即过期。
CDN控制台提供了鉴权计算器功能,方便我们计算和校验鉴权是否计算有误,还是挺不错的功能的。
鉴权导致的403解决方案
1、如果不需要CDN的鉴权功能,可以在CDN控制台关闭鉴权
2、如果鉴权过期,请重新生成鉴权url
3、如果鉴权MD5计算不正确,可以通过鉴权计算器生成的url对比自己的鉴权代码来排查计算出错的问题
1.2 防盗链问题
开启了防盗链功能,但是实际的请求头里面的referer头不符合防盗链规则导致失败,因防盗链问题导致的403.
Referer防盗链的类型如下:
黑名单:黑名单内的域名均无法访问当前的资源
白名单:只有白名单的域名才可以访问当前资源
黑名单和白名单互斥,同一时间只支持其中一种方式生效。
例如:设置白名单加不勾选空referer
空refer会返回403
不在白名单的refer也会403
只有在白名单的refer才可以正常访问
若需要url能直接在浏览器中访问,需要勾选允许空refer哦。
1.3 ip黑白名单问题
在CDN控制台配置了ip黑白名单,实际访问的ip不符合配置规则,导致出现 403
常见问题:
问:为什么配置了 IP 黑名单,还是可以正常访问,响应 200,而不是 403 ?
答:这种情况一般都是客户端真实出口 IP 跟 IP 黑名单里配置的 IP 不一致导致 的。建议获取客户端真实出口 IP,可以通过 IP 工具查询;也可以通过下载 CDN 的 日志,从CDN的日志去查找这条请求,CDN 的日志里记录了客户端 IP。
问:发现恶意请求的情况,把恶意请求的客户端 IP 配置到黑名单了,为什么还是不断有请求 CDN ?
答:CDN 作为一个服务端,无法控制客户端不请求CDN,CDN 能做的是当恶 意请求到 CDN 的时候,CDN 根据配置的安全规则拒绝不合法的请求,以 403 的形式拒绝访问。
1.4 UA黑白名单问题
配置了 UA 黑白名单,User-Agent 名单类型如下:
黑名单:黑名单内的 User-Agent 字段均无法访问当前资源。
白名单:只有白名单内的 User-Agent 字段能访问当前资源,白名单以外的 User-Agent 字段均无法访问当前资源。
黑名单和白名单互斥,同一时间只支持其中一种方式生效。
例如:配置UA黑名单
非黑名单UA可以正常访问
黑名单的ua则返回403
1.5 URL违规被封禁
403的URL涉及违法不良信息,违反了相关服务协议和《互联网信息服务管理办法》的规定,这种情况下违法 URL 会被 CDN 做屏蔽访问处理。通常这种情况会收到站内信或短信通知,请注意确保 CDN 加速的内容是合法的内容。
1.6 源站响应403
源站响应了 403 给 CDN,CDN 再把 403 响应给客户端。
一般来说,腾讯云CDN响应头中的server头会带有NWS标示。若403返回的server头非NWS,则可以检查下源站配置。
1.6.1源站自有源
可以绑定 Host 到源站访问测试是否一样存在 403 的情况,如果源站就有 403 的情况,需要先解决源站的 403 问题。另外还有一点需要注意,CDN 的回源 Host 配置错误也可能导致 403 错误。回源 HOST 跟源站的区别就是,源站决定了回源
时请求到的具体 IP 地址,而回源 HOST 决定了回源请求访问到该 IP 地址上的具体站点
1.6.2 源站是腾讯云COS
如果源bucket的访问权限是私有权限,但是没有开启回源鉴权的话,那么就会导致CDN回源请求COS的时候通不过COS的鉴权导致403
可以在接入CDN的时候开启授权服务。
也可以在对象存储控制台中开启对应选项
例如:
未开启前访问403
开启之后:
最后
以上是针对接入CDN的常见403问题的一些原因,希望能在各位读者的有所帮助。若有不对之处,欢迎及时指出。