【发布时间】:2012-09-03 16:51:30
【问题描述】:
我的应用程序将图像存储在 S3 上,然后通过 Cloudfront 代理它们。我很高兴能够使用新的 S3 CORS 支持,这样我就可以使用 HTML5 画布方法(具有跨域策略),但似乎无法正确配置我的 S3 和 Cloudfront。当我尝试将图像转换为画布元素时,仍然遇到“未捕获的错误: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>
云端
起源
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 (Cross-Origin Resource Sharing) and Firefox cross-domain font loading
还是不行。
更新:应要求提供更多信息
Request
URL:https://d1r5nr1emc2xy5.cloudfront.net/uploaded/BAhbBlsHOgZmSSImMjAxMi8wOS8xMC8xOC81NC80Mi85NC9ncmFzczMuanBnBjoGRVQ/32c0cee8
Request Method:GET
Status Code:200 OK (from cache)
更新
我想我的请求可能不正确,所以我尝试使用 CORS 启用
img.crossOrigin = '';
但是图像没有加载,我收到错误:跨域资源共享策略拒绝跨域图像加载。
【问题讨论】:
-
您可以在这里发布您的发帖请求吗?就像您在上传到 s3 时在发布请求中传递的策略和参数一样。
-
为什么是 POST 请求而不是 GET 请求?
-
好的,你能提供有关获取请求的信息吗?
-
它只是一个 'src' - 还有其他我应该格式化请求的方法吗?
-
您可以将图像存储在 s3 上吗?这是您在检索图像时遇到的问题吗?尝试使用 s3 对象的详细信息部分的链接。它将类似于 s3.amazonaws.com/<bucketname>... 并检查您是否仍然收到错误。我使用 CORS 实现了完全相同的东西,所以如果您给我更多详细信息,我可以为您提供帮助。
标签: amazon-s3 cors amazon-cloudfront