获取错误:飞行前响应中的Access-Control-Allow-Header

时间:2019-02-21 04:57:25

标签: javascript amazon-web-services cors aws-api-gateway api-gateway

enter image description here

  

错误:请求标头字段Access-Control-Allow-Origin不是   在访问前响应中被Access-Control-Allow-Headers允许。

在Chrome中禁用了cors插件的aws api时,出现上述错误。 启用cors后,api将返回正确的响应。

javascript中是否有任何机制可以从chrome中禁用cors的api获取响应?

我添加了我的请求和响应标头的屏幕截图以供参考

*注意:Cors已在服务器端(AWS api网关)上启用

2 个答案:

答案 0 :(得分:0)

如果您将Lambda与Proxy Integrations一起使用,则需要在HTTP响应中指定CORS来源。

  

对于Lambda或HTTP代理集成,您仍然可以设置   API网关中必需的OPTIONS响应标头。但是,您必须   依靠后端返回Access-Control-Allow-Origin标头   因为禁用了代理的集成响应   积分。   https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

在NodeJS中就像这样:

var response = {
    statusCode: 200,
    headers: {
        "Access-Control-Allow-Origin" : "*"
    },
    body: JSON.stringify({
        someReturnData
    })
};
callback(null, response);

答案 1 :(得分:-1)

  

在飞行前响应中,Access-Control-Allow-Headers不允许请求标头字段Access-Control-Allow-Origin

不是,我们可以看到Access-Control-Allow-Origin未在屏幕快照的Access-Control-Allow-Headers响应标题中列出。

因此,您有两种选择:

  1. 更改响应标题以允许它
  2. 首先不要从客户端发送

由于Access-Control-Allow-Origin是一个响应标头(您的JS无法授予其读取数据的权限—这会使CORS毫无意义)完全没有意义将其从客户,选项2是正确的。

修复您的客户端代码。