如何允许API网关代理与POST请求的Cognito Authorizer集成?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何允许API网关代理与POST请求的Cognito Authorizer集成?相关的知识,希望对你有一定的参考价值。

我正在尝试使用Cognito用户池授权对Lambda代理集成资源的API网关请求。

从客户端,没有授权者,所有请求都可以正常工作。当我添加授权者时,GET请求在获得授权时可以工作,但是POST / PUT / DELETE请求给了我这个错误:

401从起始点[客户端]到[端点]的XMLHttpRequest访问已被CORS策略阻止:在所请求的资源上不存在'Access-Control-Allow-Origin'标头

我为资源选择了'Enable CORS',但仍然无法使用。

js请求:

const jwt = this.$store.state.user
        .getSignInUserSession()
        .getIdToken()
        .getJwtToken();

const config = {
        headers: {
          authorization: jwt,
        },
        id: generatedID,
        name: 'generatedName',
      };

      axios.post(endpoint, config)
        .then((val) => { this.info = val; })
        .catch(err => console.log(err));

身份验证配置:authorizer config

如果我将请求类型从POST更改为GET,它将起作用。如果我从API网关中删除了授权者,它将起作用。 POST / PUT / etc我缺少什么?

我想获得200/201响应并请求通过API网关授权。

答案

如本文档所述,可以通过向API网关添加预检'OPTIONS'来解决此问题。

添加预检条目后,api网关应类似于屏幕截图。

https://enable-cors.org/server_awsapigateway.html

以上是关于如何允许API网关代理与POST请求的Cognito Authorizer集成?的主要内容,如果未能解决你的问题,请参考以下文章

确保所有 http 请求都通过我的 nginx api 网关

微服务下使用网关 Spring Cloud Gateway

为微服务 API 网关配置 Nginx

API 网关 - POST 多部分/表单数据

彻底解决跨域问题

API 网关 CORS 问题