AWS Api Gateway CORS“访问控制允许来源”正则表达式与 Cloudformation

Posted

技术标签:

【中文标题】AWS Api Gateway CORS“访问控制允许来源”正则表达式与 Cloudformation【英文标题】:AWS Api Gateway CORS "access-control-allow-origin" Regex with Cloudformation 【发布时间】:2017-03-06 22:51:53 【问题描述】:

AWS Api Gateway 中是否可以为 CORS 标头设置通配符子域?

例如(模拟集成摘录)

"ResponseParameters":
              "method.response.header.Access-Control-Allow-Origin": "'http:\/\/*.example.com'",
              "method.response.header.Access-Control-Allow-Headers": "'Content-Type, X-Amz-Date, Authorization, X-Api-Key, X-Amz-Security-Token'",
              "method.response.header.Access-Control-Allow-Methods": "'GET', 'OPTIONS'"
            

目前,我收到错误消息,指出 CORS 标头与我在 Access-Control-Allow-Origin 中的内容不匹配。

【问题讨论】:

【参考方案1】:

API Gateway 会将 Access-Control-Allow-Origin 中的值返回给浏览器,因此它将返回一个通配符,如您的示例所示;但是,这不会有任何用处,因为 CORS 规范不支持部分通配符,因此浏览器不处理。 CORS 规范确实允许返回星号 ('*') 以允许所有来源。

显然,如果您只需要允许一个来源,您只需完全指定它。一些需要允许多个来源的客户返回一个星号,从而允许所有来源。如果您必须只允许源的子集,则可以这样做,但您将无法对标头使用静态值(如 API Gateway 控制台中的 CORS 向导所做的那样)。您必须使用 Lambda 或 http 集成来实现 HEAD 方法,将“Referer”标头传递给您的集成,让您的集成将“Referer”标头与您对所有人的来源列表进行比较,并有条件地回复映射到“Access-Control-Allow-Origin”标头的值。您还必须在对资源调用的任何其他方法(GET、POST 等)中包含类似的功能。

【讨论】:

你的意思是这样的吗? ***.com/questions/14003332/…你有实现 HEAD 方法的例子吗?另外,谢谢你的回答

以上是关于AWS Api Gateway CORS“访问控制允许来源”正则表达式与 Cloudformation的主要内容,如果未能解决你的问题,请参考以下文章

AWS API Gateway + AWS Lambda 中的 CORS

AWS CDK API Gateway 启用 Cors

AWS API Gateway CORS 问题

使用 BOTO3 为 AWS Api Gateway 自动化 CORS

AWS API Gateway 429 响应 - 没有 CORS 标头

AWS API Gateway 中的 CORS 配置