使用 HTTP 从 Angular 应用程序中调用 AWS Lambda 函数

Invoke AWS Lambda function from within an Angular application using HTTP

我已经使用 AWS SDK 为 Java 成功制作、构建和部署了 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 仅保护您不在浏览器中读取响应:

  1. 请求将触发
  2. 服务器将执行
  3. 响应将会到达,但是
  4. 浏览器不会显示结果

如果你从提示中触发它,你会得到一个响应。

我认为您必须在服务器端应用您正在调用的域(应该有一种方法可以为 AWS lambda 执行此操作)。

这就是 CORS 的工作原理。