我有一个附加到API网关的AWS Lambda函数。我一直在努力设置CORS,但我无法弄清楚这里发生了什么。
这是客户请求:
var endPoint = 'https://776v8jadw0.execute-api.us-east-1.amazonaws.com/sandbox/helpwithprogramming/contact';
var payload = {message: 'Hello there'};
var headers = new Headers();
headers.append('Access-Control-Allow-Origin', '*');
var options = {
method: 'POST',
headers: headers,
mode: 'cors',
cache: 'default',
body: JSON.stringify(payload)
};
fetch(endPoint, options)
.then(res => {
console.log('ok', res);
})
.catch(err => {
console.log('error', err);
});
OPTIONS方法的响应标头如下所示:API网关:
access-control-allow-headers:Access-Control-Allow-Origin,Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token
access-control-allow-methods:DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT
access-control-allow-origin:*
content-length:0
content-type:application/json
date:Mon, 11 Dec 2017 05:33:59 GMT
status:200
执行POST时,我从API网关得到以下响应:
{message: "Hello from Lambda"}
但是,我的fetch调用实际上失败了,并进入catch块并出现以下错误:
TypeError: Failed to fetch
Chrome会在控制台中显示此消息:
无法加载 https://776v8jadw0.execute-api.us-east-1.amazonaws.com/sandbox/helpwithprogramming/contact: No' Access-Control-Allow-Origin'标题出现在请求的上 资源。起源' http://localhost:63342'因此是不允许的 访问。如果不透明的响应满足您的需求,请设置请求 模式为' no-cors'在禁用CORS的情况下获取资源。
答案 0 :(得分:1)
在AWS控制台中导航到API网关。