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

时间:2017-06-26 05:59:43

标签: amazon-web-services cors aws-lambda serverless-framework

我想限制我的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"
},

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

1 个答案:

答案 0 :(得分:2)

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

来自this answer

  

听起来像推荐的方法是让您的服务器读取   来自客户端的Origin头,将其与域列表进行比较   你想允许,如果它匹配,则回显Origin的值   标题返回到客户端作为Access-Control-Allow-Origin标头   回应。

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

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

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

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