什么有效
我制作了一个简单的文字游戏。它工作得很好。用户要求的一件事是单词有效性检查。我在 AWS Lambda Proxy/Node.js 端点上运行 oxford dictionary api,当我通过浏览器访问 APIGateway uri 时效果很好。
我选择 AWS Lambda 函数是为了保护我的 Oxford API key ,并拥有更直接的 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 MIME 类型应用程序/json。见 https://www.chromestatus.com/feature/5629709824032768更多细节。 getWord@myproject.html:57 (匿名)@myproject.html:67
客户端代码
我正在使用简单的 fetch:
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 问题如何解决?
最佳答案
显然我只需要坚持。以防万一有人遇到这种情况:
尽管启用了 APIGateway CORS,但 CORS 权限仍会传递给启用了 Lambda 代理集成的 lambda 函数。尽管 APIgateway 接受了初始 URI 请求,但由于 lambda 响应中缺少 header ,它最终失败了。不知何故,这触发了 CORB 而不是 CORS。我不知道为什么。
答案是确保在 APIgateway 中启用了 CORS,并且 lambda 函数响应回调模式包含“Access-Control-Allow-Origin” header 。
关于javascript - Chrome CORB 阻止 APIGateway lambda 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975296/