【问题标题】:AWS Api Gateway CORS "access-control-allow-origin" Regex with CloudformationAWS Api Gateway CORS“访问控制允许来源”正则表达式与 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 中的内容不匹配。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2017-01-30
    • 2019-02-09
    • 2016-06-02
    • 2021-09-07
    • 2016-06-27
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多