AWS Api Gateway CORS" access-control-allow-origin"正则表达式与Cloudformation

时间:2016-10-25 02:56:40

标签: amazon-web-services cors aws-api-gateway

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

E.g。 (模拟整合摘录)

"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 个答案:

答案 0 :(得分:1)

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

显然,如果你只需要允许一个原点,你只需完全指定它。一些需要允许多个来源的客户返回星号,因此允许所有来源。如果您只允许原始子集,则可以完成,但您不能使用标头的静态值(如API网关控制台中的CORS向导那样)。你必须使用Lambda或http集成来实现HEAD方法,传递" Referer"标题为您的集成,让您的集成比较" Referer"标题到您所有人的起源列表,并有条件地回复您映射到" Access-Control-Allow-Origin"头。您还必须在您在资源上调用的任何其他方法(GET,POST等)中包含类似的功能。