跨域访问即通过 HTTP 请求,从一个域去请求另一个域的资源。只要协议、域名、端口有任何一个不相同,都会被当作是不同的域。控制台操作步骤请参见 设置跨域访问 或 跨域访问 最佳实践文档。
访问被拒绝的可能原因如下:
1. 检查您的配置是否与您携带的头部一致,查看是否存在不可见字符,例如空格。
2. 检查您发起请求的域名信息,如果您使用 CDN 加速域名访问,需要在 CDN 控制台进行跨域配置,可参考 自定义响应头配置。
3. 检查您的存储桶权限状态,判断您的访问是否符合存储桶的授权。
4. 检查您的浏览器缓存情况,可能是由于浏览器缓存导致的报错,可通过 Ctrl+F5 强制刷新浏览器或在浏览器 Network 选项卡中勾选 Disable cache 解决。
进行跨域设置,设置 Origin 为*
。详情请参见 设置跨域访问 最佳实践文档。
请按照下图配置跨域规则,尝试切换浏览器,测试是否可行。详情请参见 设置跨域访问。
若您使用的域名是 CDN 加速域名,请在 CDN 控制台配置跨域,详情请参见 HTTP 响应头配置 文档。
控制台支持二级域名的模糊匹配。
请您按照以下步骤进行检查:
1. 检查 COS 控制台是否设置跨域规则,详细操作可参考 设置跨域访问。
2. 确认是否使用 CDN 加速域名,若使用 CDN 加速域名,需在 CDN 侧配置跨域规则,请参考 HTTP 响应头配置。
3. 已设置跨域规则,请使用命令行测试规则是否生效。命令格式为:curl -Lvo /dev/null "<对象地址>" -H "origin:<域名>"
。请您根据业务情况替换<>中的值,例如:curl -Lvo /dev/null "https://bucketname-1250000000.cos.ap-guangzhou.myqcloud.com/test.png" -H "origin:https://www.baidu.com"
;若返回状态码 200,则规则已生效,请删除浏览器缓存后重试。
4. 若仍无法解决,请尝试在跨域访问规则中配置 max-age=0。
跨域规则支持设置 IP 地址的形式,详细介绍请查看 设置跨域访问 文档。
如果您使用 CDN 访问 COS 时遇到跨域报错,请参考 HTTP 响应头配置 文档在 CDN 控制台设置允许跨域。
请检查是否配置跨域访问,若已正确配置跨域访问,建议您清除浏览器缓存后重试;若仍无法解决,请尝试在跨域访问规则中配置 max-age=0。 配置跨域访问指引,请参见 设置跨域访问。