微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用HTTP从Angular应用程序内调用AWS Lambda函数

我已经使用适用于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的工作方式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?