如何限制 Lambda 函数仅响应特定来源?

How to restrict a Lambda function to respond only to specific origins?

我想限制我的 Lambda 函数(使用无服务器框架工具创建)仅接受来自 abc.comdef.com 的请求。它应该拒绝所有其他请求。我怎样才能做到这一点?我尝试像这样设置访问控制来源:

cors: true
response:
  headers:
    Access-Control-Allow-Origin: "'beta.leafycode.com leafycode.com'"

在处理程序中像这样:

headers: {
  "Access-Control-Allow-Origin" : "beta.leafycode.com leafycode.com"
},

但没有任何效果。知道为什么吗?

您的代码存在的问题是 Access-Control-Allow-Origin doesn't accept multiple domains.

来自this answer

Sounds like the recommended way to do it is to have your server read the Origin header from the client, compare that to the list of domains you'd like to allow, and if it matches, echo the value of the Origin header back to the client as the Access-Control-Allow-Origin header in the response.

因此,在编写对 OPTIONS 动词的支持时,这是浏览器将预检请求以查看是否支持 CORS 的动词,您需要编写 Lambda 代码来检查 event 对象看客户端的域,用域动态设置对应的Access-Control-Allow-Origin

在您的问题中,您使用了两种不同类型的 CORS 配置:Lambda 和 Lamba-Proxy。我建议您使用第二个选项,这样您就可以动态设置域。

headers: {
  "Access-Control-Allow-Origin" : myDomainValue
},

在无服务器框架中查看有关 CORS 配置的更多信息here