Chrome CORB阻止APIGateway Lambda请求

时间:2018-06-21 18:24:46

标签: javascript node.js cors aws-lambda cross-origin-read-blocking

有效的方法

我有一个简单的文字游戏。效果很好。用户要求的一件事是单词有效性检查。我在AWS Lambda Proxy / Node.js端点上运行牛津词典api,当我通过浏览器访问APIGateway uri时,该功能非常有用。

我选择了一个AWS Lambda函数以保护我的牛津API密钥,并具有更直接的CORS控制。

已采取的步骤

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

我开始使用本地服务器@ 127.0.0.1为游戏添加代码。

遇到错误

我遇到了以下问题:

myproject.html:57跨域读取阻止(CORB)阻止了MIME类型为application / json的跨域响应https://XXXXXXXXXXX.execute-api.us-east-2.amazonaws.com/prod/dictionary?word=help。有关更多详细信息,请参见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问题?

2 个答案:

答案 0 :(得分:14)

我只需要坚持不懈。以防万一有人遇到这个问题:

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

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

答案 1 :(得分:1)

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

就我而言,添加标头后,我不得不重新部署API。 附加屏幕截图以防某些用户受益:

集成响应:

enter image description here

方法响应:
enter image description here

邮递员的标题响应-工作: enter image description here