公开R2存储桶并绑定自定义域名后,是否仍需配置CORS策略?
关于Cloudflare R2跨域视频嵌入的配置说明
只设置R2存储桶为公开访问并绑定自定义域名不足以让任意域名无缝嵌入视频,你必须额外配置CORS策略才能实现跨源无限制访问,原因如下:
- 公开访问≠跨源允许:公开访问只是取消了R2资源的访问签名要求,任何人都能通过URL直接请求资源,但浏览器的同源策略是独立的安全机制——当外部网站的
<video>标签加载你的R2视频时,浏览器会触发跨源检查,若没有对应的CORS策略允许该域名,请求会被拦截。 - 视频嵌入依赖预检请求:对于视频这类资源,浏览器会先发送OPTIONS预检请求,验证R2是否允许当前源的跨域访问。如果你的CORS策略没有明确允许所有源(
*),预检请求会返回不符合要求的响应,导致视频无法加载。
推荐的R2 CORS配置(实现无限制跨源访问)
在R2存储桶的CORS设置中添加以下规则:
[ { "AllowedOrigins": ["*"], "AllowedMethods": ["GET", "HEAD"], "AllowedHeaders": ["*"], "ExposeHeaders": ["Content-Length", "Content-Type"], "MaxAgeSeconds": 86400 } ]
AllowedOrigins: ["*"]:允许任意域名跨源访问AllowedMethods:只开放视频加载需要的GET和HEAD方法,避免不必要的权限MaxAgeSeconds:缓存预检请求结果,减少重复请求
额外说明
自定义域名只是替换了R2的默认访问域名,不会改变跨源规则的生效逻辑——跨源访问的权限完全由存储桶的CORS策略控制,和使用哪个域名访问无关。
内容的提问来源于stack exchange,提问作者GorvGoyl
相关产品推荐
相关产品推荐

