微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 serverless.yml 中跨函数共享 CORS 配置

如何解决在 serverless.yml 中跨函数共享 CORS 配置

我们在 serverless.yml 中设置了一堆需要支持 CORS 的 API 端点。

此配置有效:

functions:
  function1:
    handler: api.refresh
    events:
      - http:
          path: function1
          method: post
          cors:
            origin: '*'
            headers:
              - Content-Type
              - X-Amz-Date
              - Authorization
              - X-Api-Key
              - X-Amz-Security-Token
              - X-Amz-User-Agent

但这意味着我们需要为每个函数复制自定义 CORS 标头的列表 - 可能有很多地方我们需要在添加新标头后立即更新。

我们如何一次指定允许的 CORS 标头并将它们应用于所有函数?理想情况下,我们还可以自动使所有功能同时启用 CORS。

解决方法

目前serverlessjs不支持一次性为所有函数设置cors,需要为每个函数事件开启cors。

在正常情况下,您只需定义 cors 设置一次并将其应用于函数(如变量)

# ...
custom:
  defaultCors:
    origin: "*"
    headers:
      - Content-Type
      - X-Amz-Date
      - Authorization
      - X-Api-Key
      - X-Amz-Security-Token
      - X-Amz-User-Agent
# ...
functions:
  function1:
    handler: api.refresh
    events:
      - http:
          path: function1
          method: post
          cors: ${self:custom.defaultCors}  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。