Amazon S3,无法设置 CORS 策略
Posted
技术标签:
【中文标题】Amazon S3,无法设置 CORS 策略【英文标题】:Amazon S3, impossible to set CORS Policy 【发布时间】:2021-02-13 08:41:11 【问题描述】:我需要设置一个 S3 存储桶来为我的 Django 静态文件提供服务,当我尝试添加 CORS 策略时,我得到了以下结果:
Expected params.CORSConfiguration.CORSRules to be an Array
我首先尝试了这个策略:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
经过一番搜索,我发现亚马逊已将格式更改为 JSON (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html#how-do-i-enable-cors)。
所以我尝试了他们的 JSON 示例:
"CORSConfiguration":
"CORSRule":[
"AllowedOrigin":[
"http://www.example.fr"
],
"AllowedMethod":[
"PUT",
"POST",
"DELETE"
],
"AllowedHeader":[
"*"
]
,
"AllowedOrigin":[
"*"
],
"AllowedMethod":[
"GET"
]
]
我得到了完全相同的错误。
于是我在***上搜索并看到了这个帖子:Unable to update AWS S3 CORS POLICY
我尝试了给定的语法,但没有成功:/
如果有人有想法,那就太好了:)
【问题讨论】:
【参考方案1】:这是一个有效的例子:
[
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"http://www.example.com"
],
"ExposeHeaders": []
,
"AllowedHeaders": [],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
]
请注意,不再需要 CORS XML 标记(它们是隐含的),单数名词似乎已变为复数,例如“AllowedMethod”变成了“AllowedMethods”,因为在 XML 中每个标签代表一个实体,而在 JSON 中它代表多个。因此,在语言上是可防御的,但不能向后兼容。
【讨论】:
以上是关于Amazon S3,无法设置 CORS 策略的主要内容,如果未能解决你的问题,请参考以下文章
我们如何为 Amazon S3 存储桶中的文件夹设置 CORS
如何在 Amazon S3 中配置 CORS 策略以从 React App 上传文档?
被 CORS 策略阻止:从 Amazon S3 调用图像时没有“Access-Control-Allow-Origin”标头