我的应用程序在 S3上存储图像,然后通过 Cloudfront 代理它们。我很高兴使用新的 S3 CORS 支持,这样我就可以使用 HTML5画布方法(它有一个跨源策略) ,但似乎不能正确配置我的 S3和 Cloudfront。当我尝试将一个图像转换为一个画布元素时,仍然会遇到“未捕获的错误: SECURITY _ ERR: DOM Exception 18”。
以下是我目前掌握的信息:
中三
<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>
云端
起源
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>
基于这个问题
还是不行。
更新: 更多信息
Request
URL:https://d1r5nr1emc2xy5.cloudfront.net/uploaded/BAhbBlsHOgZmSSImMjAxMi8wOS8xMC8xOC81NC80Mi85NC9ncmFzczMuanBnBjoGRVQ/32c0cee8
Request Method:GET
Status Code:200 OK (from cache)
更新
我想也许我的请求是不正确的,所以我尝试启用 CORS
img.crossOrigin = '';
但是当图像没有加载时,我得到了一个错误: 跨来源资源共享策略拒绝了跨源图像加载。