问题描述
我已经使用适用于Java的AWS开发工具包成功制作,构建和部署了AWS Lambda。我已经使用AWS控制台测试了Lambda,没有任何问题。
现在,我希望每当有人从Angular应用程序中单击按钮时调用Lambda函数。我的第一个想法是简单地使用主体对Lambda API端点进行HTTP POST调用。
请参阅我的以下服务代码:
export class Service{
constructor(private httpClient: HttpClient) {}
createContact() {
const header: HttpHeaders = new HttpHeaders();
header.append('Accept','application/text');
this.httpClient
.post(RELAY_URL,test,{ headers: header,responseType: "text" })
.subscribe((data) => {
console.log(data);
});
}
}
实际上,执行此方法将调用Lambda方法,并且lambda将成功完成。但是,我的Angular客户端没有收到正确的响应。但是,这确实发生了:
我很茫然,希望你能提供帮助。
解决方法
CORS仅保护您免于在浏览器中读取响应:
- 请求将触发
- 服务器将执行
- 响应将到达,但是
- 浏览器不会向您显示结果
如果从提示符处将其触发,则会得到响应。
我认为您必须在服务器端应用您正在调用的域(对于AWS Lambda,应该有一种方法可以做到这一点)。
这就是CORS的工作方式。