Cors 带有cognito授权人cros错误的api网关终结点?

Cors 带有cognito授权人cros错误的api网关终结点?,cors,aws-api-gateway,amazon-cognito,Cors,Aws Api Gateway,Amazon Cognito,我将API网关与cognito一起用于授权GET端点。 如果我通过postman(node\python代码)运行它,它会非常好用。 但当我在CHROME上运行react应用程序时,我会得到 从源代码的“我的路径”访问XMLHttpRequest”http://localhost:3000'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头。 有关我的api网关api的详细信息 使用cognito authorizaer获取请求,需要授权头 g

我将API网关与cognito一起用于授权GET端点。 如果我通过postman(node\python代码)运行它,它会非常好用。 但当我在CHROME上运行react应用程序时,我会得到
从源代码的“我的路径”访问XMLHttpRequest”http://localhost:3000'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头。

有关我的api网关api的详细信息

  • 使用cognito authorizaer获取请求,需要
    授权
  • get请求具有返回以下标头的lambda代理
  • 不带cognito授权人的选项方法
  • 我在端点上启用CORS
  • 结果:

  • 没有cognito在GET it works->上,我将内容输入我的react应用程序
  • 当我添加cognito auth时,我得到了CORS错误
  • 我在运行
    curl-v-X选项https://
    时看到的异常是
  • *连接状态已更改(最大并发流==128)!
    
  • 我正在运行的react代码是:
  • 从“axios”导入axios;
    常量值=
    const url1=“https:…”
    常数头={
    “授权”:价值,
    }
    函数getPoints(){
    axios.get(
    url1,标题
    )。然后((响应)=>{
    console.log(“successss”);
    console.log(响应)
    //log(response.json());
    },(错误)=>{
    控制台日志(“errorrrrr”);
    console.log(错误);
    }); 
    }
    函数App(){
    返回(
    {getPoints()}
    cors试验
    );
    }
    导出默认应用程序;
    
    你知道我做错了什么吗?任何帮助\提示都会有帮助 thxCORS头(
    访问控制允许-*
    )是响应头。您不应该在请求中指定它们

    API网关具有您应该使用的


    如果您决定仍然要使用自己的处理程序,请确保如果您将您的Cognito授权人设置为默认授权人,请在
    OPTIONS
    方法中将授权人显式设置为
    NONE
    authorizer。

    但是请注意我写的,在选项上没有Cognito授权我的道歉,让我困惑的是:“如果没有cognito,它就可以工作,我在添加cognito auth的那一刻就将内容输入到我的react应用程序中,我得到了CORS错误。我知道我做错了什么吗?”更新。您必须在选项处理程序顶部的get和post处理程序中返回相应的头。但是,正如您所看到的,我返回的头是“``访问控制允许源代码”:“*”``我已经更新了几点,但这并不复杂,如果真的没有授权程序集,并且您的选项处理程序正在正确调用和如果反应正确,那么没有明确的原因;不行。请仔细检查您声明的所有内容是否准确。在curl OPTIONS响应中获取401(未经授权)表明API网关端点未正确配置为CORS。我会删除您的选项配置,并通过AWS控制台操作菜单添加默认设置,直到它正常工作。浏览器无法发送选项的身份验证。在curl OPTIONS返回200之前,它不太可能工作。401建议将“选项的身份验证”设置为“无”以外的其他值。另外,代码示例中的auth头似乎缺少令牌的承载前缀,例如
    “Authorization”:“Bearer”+value
    (承载和令牌之间的空格)。此外,如果根本没有配置选项动词,您仍然可以在API网关中看到误导性的401选项。这使得它看起来好像被错误配置为需要auth,但实际上它只是没有启用。您是否可能向API添加了选项配置,但忘记将其部署到阶段端点?(即,您可以在API的控制台中看到它,但在控制台的Stages部分中不可见)
    "headers": {
                'Access-Control-Allow-Headers': 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
                "Access-Control-Allow-Credentials": 'true',
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': 'OPTIONS, GET, POST',
            },
    
    * Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
    < HTTP/2 401 
    < date: Mon, 26 Apr 2021 08:03:37 GMT
    < content-type: application/json
    < content-length: 26
    < x-amzn-requestid: 5f305d7d-70cc-4751-81f5-581345521f00
    < x-amzn-errortype: UnauthorizedException
    < x-amz-apigw-id: eYcKEHB2vHcFSLw=
    < 
    
    
    import axios from "axios";
    const value = <my id token>
    const url1 = "https:...."
    const headers ={
      "Authorization": value,
    }
    function getPoints(){
       axios.get(
        url1, headers
      ).then((response) => {
        console.log("sucessssssss");
        console.log(response)
        // console.log(response.json());
      }, (error) => {
        console.log("errorrrrr");
        console.log(error);
      }); 
    }
    
    function App() {
      return (
        <div className="App">
          {getPoints()}
          cors test
        </div>
      );
    }
    
    export default App;