Node.js CORS导致403 Forbidden

时间:2017-05-15 07:02:35

标签: node.js http cors fetch

我们的网站使用HTML5 fetch API来调用我们的后端NodeJS服务以执行某些操作。我们的后端驻留在与主网站不同的域上,因此我们在Node应用程序上启用了CORS。这适用于99%的客户。

然而,一位客户遇到了问题。他们试图从他们的工作场所访问我们的网站(也许他们的工作场所网络有更高的安全设置......?)他们会收到以下错误:

  

api.our-node-backend.com/blah无法加载资源:服务器   回复状态为403(Forbidden)的书:1 Fetch API不能   加载https://api.our-node-backend.com/blah。对预检请求的响应   没有通过访问控制检查:否'访问控制 - 允许 - 来源'   标头出现在请求的资源上。起源   ' https://www.our-frontend-website.com'因此是不允许的   访问。响应具有HTTP状态代码403.如果是不透明的响应   满足您的需求,将请求模式设置为“无人”状态。去取   CORS禁用的资源。

我们的Node应用程序目前配置如下:

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
});
// respond to options pre-flight
app.options('*', function(req, res) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    res.status(200).send();
});

此配置有问题吗?堆栈溢出的其他示例将Access-Control-Allow-Headers设置为" Origin,X-Requested-With,Content-Type,Accept"而不只是" Content-Type"。这有什么不同?

0 个答案:

没有答案