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

标签 angular amazon-web-services aws-lambda angular-httpclient

我已使用适用于 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 的错误
  • 我在控制台中收到有关失败的 Http 请求的错误
  • 在浏览器开发人员窗口的网络选项卡中,我从 Http 请求中获得了成功响应

我很迷茫,希望你能帮忙。

最佳答案

CORS 仅保护您不读取浏览器中的响应:

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

如果您从提示中触发它,您将收到响应。

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

这就是 CORS 的工作原理。

关于angular - 使用 HTTP 从 Angular 应用程序中调用 AWS Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64169956/

相关文章:

python - 使用 AWS lambda 通过下载 URL 将视频上传到 S3

angular - 在 Angular 9 中使用 PrimeNG 咆哮模块

amazon-web-services - Amazon SQS 死信队列 : Is it really dead letter or poison?

asp.net-core - AWS API网关+Lambda : favicon issue

amazon-web-services - AWS CLI --output 文本是水平的而不是垂直的

amazon-web-services - 在 AWS Cloudformation 控制台中获取完整的事件文本

node.js - 找不到无服务器命令 "offline"。 VS 代码调试器

typescript -::Ionic2/Angular2:CucumberJs + Protractor + TypeScript 配置

angular - 由模块 'BrowserAnimationsModule' 声明的意外模块 'AppModule' 。请添加@Pipe/@Directive/@Component 注解

angular - NgbModal.open 在 Angular 4 中不起作用