Node.js AWS API网关:403禁止响应飞行前选项请求
我正在使用AWSAPI网关创建API。我已经创建了一个PUT方法来在我的数据库上执行一些功能 您可以在下图中看到,我已将以下内容设置为AWS上的响应标题 这就是我请求作出反应的方式:Node.js AWS API网关:403禁止响应飞行前选项请求,node.js,reactjs,aws-lambda,aws-api-gateway,fetch-api,Node.js,Reactjs,Aws Lambda,Aws Api Gateway,Fetch Api,我正在使用AWSAPI网关创建API。我已经创建了一个PUT方法来在我的数据库上执行一些功能 您可以在下图中看到,我已将以下内容设置为AWS上的响应标题 这就是我请求作出反应的方式: fetch('https://myawsurl.execute-api.ap-southeast-2.amazonaws.com/Dev/search', { method: 'PUT', headers: { 'Content-Type':'application/json', 'Acc
fetch('https://myawsurl.execute-api.ap-southeast-2.amazonaws.com/Dev/search', {
method: 'PUT',
headers: {
'Content-Type':'application/json',
'Access-Control-Request-Method': 'PUT',
'Access-Control-Request-Headers': 'Content-Type'
},
body: {
"searchby": JSON.stringify({"searchby":"test"}),
}
}).then(res=>res.json()).
then((data)=>this.setState({
jobs:data,
isLoading:false,
}));
每当调用fetch时,我的chrome控制台上都会出现以下错误:
CORS策略已阻止从源“”获取“”的访问:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源”标头。如果不透明响应满足您的需要,请将请求的模式设置为“无cors”,以获取禁用cors的资源。”
从我看到的情况来看,我的回答中清楚地看到了“访问控制允许来源”
我知道邮递员的工作方式不同,但我不会在邮递员身上提出同样的要求时出错
下面是通过邮递员对相同请求的响应标题的屏幕截图
奇怪的是,firefox上的错误与chrome上的不同
您似乎已经有了答案,但对于浏览此帖子的其他人来说,失败的原因是该方法未返回标题 浏览器在调用PUT方法之前代表我们调用此方法。这是预期的行为 下面是api网关关于CORS的文档
屏幕截图显示响应为403错误。这就是需要解决的问题。您设置的Access Control-*响应头不会添加到4xx错误中。您需要将服务器配置为以200 OK而不是403错误响应选项请求。如果你这样做,你设置的标题会像预期的那样添加到响应中。我在AWS API网关上添加了一个带有必要响应头的选项资源。我还改变了我的请求体的结构,显然,我没有正确发送JSON数据。很高兴听到你让它工作起来