我想限制我的Lambda函数(使用无服务器框架工具创建)仅接受来自abc.com
和def.com
的请求。它应该拒绝所有其他请求。我怎样才能做到这一点?我尝试设置这样的访问控制来源:
cors: true
response:
headers:
Access-Control-Allow-Origin: "'beta.leafycode.com leafycode.com'"
并在处理程序中这样:
headers: {
"Access-Control-Allow-Origin" : "beta.leafycode.com leafycode.com"
},
但没有任何效果。知道为什么吗?
答案 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配置的更多信息。