我的应用程序将图片存储在 S3 上,然后通过 Cloudfront 进行代理。我很想使用新的S3 CORS支持,以便我可以使用 HTML5 画布方法(这些方法具有跨域策略),但是好像无法正确配置我的S3和Cloudfront。当我尝试将图像转换为画布元素时仍然会遇到"Uncaught Error: SECURITY_ERR: DOM Exception 18"
。
以下是我目前的配置:
S3
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>MY_WEBSITE_URL</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>MY_CLOUDFRONT_URL</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Cloudfront
起源
Origin Protocol Policy: Match Viewer
HTTP Port: 80
HTTPS Port: 443
行为
Origin: MY_WEBSITE_URL
Object Caching: Use Origin Cache Headers
Forward Cookies: None
Forward Query Strings: Yes
我是否漏了什么?
更新: 刚试过将头文件更改为
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
基于这个问题Amazon S3 CORS(跨源资源共享)和Firefox跨域字体加载
仍然无法使用。
更新:有关请求的更多信息。
Request
URL:https://d1r5nr1emc2xy5.cloudfront.net/uploaded/BAhbBlsHOgZmSSImMjAxMi8wOS8xMC8xOC81NC80Mi85NC9ncmFzczMuanBnBjoGRVQ/32c0cee8
Request Method:GET
Status Code:200 OK (from cache)
更新
我认为我的请求可能不正确,所以我尝试使用以下方法启用CORS:
img.crossOrigin = '';
但是图像没有加载,我收到了错误消息:跨源资源共享策略阻止了跨域图像加载。