11

什么有效

我已经建立了一个简单的文字游戏。它工作得很好。用户要求的一件事是单词有效性检查。我在 AWS Lambda Proxy/Node.js 端点上运行 oxford dictionary api,当我通过浏览器访问 APIGateway uri 时效果很好。

我选择了一个 AWS Lambda 函数来保护我的 Oxford API 密钥,并拥有更直接的 CORS 控制。

采取的步骤

我在 AWS APIGateway 中启用了 CORS,并在开发过程中使用了“*”通配符。

我开始使用我的本地服务器@ 127.0.0.1 编写游戏的附加代码。

遇到错误

我遇到了以下问题:

myproject.html:57 跨域读取阻止 (CORB) 阻止了跨域响应https://XXXXXXXXXXX.execute-api.us-east-2.amazonaws.com/prod/dictionary?word=help with MIME type application/ json。有关详细信息,请参阅https://www.chromestatus.com/feature/5629709824032768 。getWord@myproject.html:57(匿名)@myproject.html:67

客户端代码

我正在使用一个简单的获取:

         var base_url = "https://XXXXXXXXXXX.execute-api.us-east-2.amazonaws.com/prod/dictionary?word=";
            getWord = function(word){
               fetch(base_url+word, {
                    headers: {
                        'content-type': 'application/json'
                    },
                    method: 'GET', 
                    mode: 'cors'
               }).then(function(response) {
                    console.log(response);
               });
            }

问题

我从未听说过CORB。我不明白是什么触发了 CORB,以及解决此问题的步骤是什么。CORB 问题如何解决?

4

2 回答 2

16

我只是显然需要坚持。以防万一有人遇到这种情况:

尽管启用了 APIGateway CORS,但 CORS 权限仍会传递给启用了 Lambda 代理集成的 lambda 函数。尽管 APIgateway 接受了初始 URI 请求,但由于 lambda 响应中缺少标头,它最终失败了。不知何故,这触发了 CORB 而不是 CORS。我不知道为什么。

答案是确保在 APIgateway 中启用了 CORS,并且 lambda 函数响应回调模式包含“Access-Control-Allow-Origin”标头。

于 2018-06-21T20:09:43.790 回答
2

我有类似的问题。我建议使用 POSTMAN 进行调试,因为它会显示标题并允许您调整请求中所需的任何内容。

在我的情况下,我必须在添加标头后重新部署我的 API。附上屏幕截图以防对某些用户有帮助:

整合响应:

在此处输入图像描述

方法响应:
在此处输入图像描述

邮递员的标题响应 - 工作: 在此处输入图像描述

于 2019-12-05T04:40:31.633 回答