【发布时间】:2017-01-30 10:01:12
【问题描述】:
我有一个连接到定义的 AWS API 网关的 AWS Lambda 实例。如果我启用 CORS 并将access-control-allow-origin 定义为http://example.com,那么我可以从http://example.com 访问 Lambda 实例。但是,如果我使用https://example.com,它就不起作用了。
那么在 AWS 中,如何在不使用通配符的情况下使用多个 access-control-allow-origin 值来定义?我尝试使用 *.example.com 之类的东西,但这不起作用。
编辑:如果我在 API 网关上使用 '*' 作为我的值,但在我的 S3 存储桶上设置 CORS 规则,那会安全吗?存储桶规则示例:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
【问题讨论】:
-
这里有同样的问题。我的情况是我必须使用 withCredentials() 选项,因此不允许使用通配符。我可能需要自己处理 cors 标头,而不是让 apigw 处理它。很奇怪,他们为 s3 提供了 CORS 规则,但没有为 apigatway 提供。
标签: amazon-web-services amazon-s3 lambda cors aws-api-gateway