有效的方法
我有一个简单的文字游戏。效果很好。用户要求的一件事是单词有效性检查。我在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问题?
答案 0 :(得分:14)
我只需要坚持不懈。以防万一有人遇到这个问题:
尽管启用了APIGateway CORS,但在启用Lambda代理集成的情况下,CORS权限会传递给lambda函数。尽管最初的URI请求已在APIgateway处接受,但由于lambda响应中缺少标头,最终它最终失败了。不知何故,这触发了CORB而不是CORS。我不知道为什么。
答案是确保在APIgateway中启用CORS,并且lambda函数响应回调模式包含“ Access-Control-Allow-Origin”标头。
答案 1 :(得分:1)