节点:CORS偶尔会失败

时间:2014-11-26 19:18:23

标签: node.js heroku cors

我有一个节点应用程序,其中服务器托管在heroku上。在我发送大约10或15之前,我的所有请求都是成功的。然后我开始收到CORS错误。知道为什么会这样吗?

试一试。 http://danielrasmuson.github.io/

这是我的“CORS启用代码”#39;我现在正在尝试一些事情。

var app = express();
app.use(cors());

app.all('/*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
});

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

2 个答案:

答案 0 :(得分:1)

我不知道是否为时已晚,但这可能会有所帮助: 我在这段代码中遇到了同样的问题:(偶尔我会得到cors erros和503 heroku错误)

router.post('/create', function (req, res, next) {
    password(req.body.user_password).hash(function (error, hash) {
        if (error)
            throw new Error('Something went wrong!' + error)

        console.log(req.body);
        req.body.user_password = hash;
        User.create(req.body, function (err, post) {
            if (err) return next(err);
            console.log(post);
            res.json(post);
        });
    });

});

当我将其更改为:

router.post('/create', function (req, res, next) {
    password(req.body.user_password).hash(function (error, hash) {
        if (error) {
            throw new Error('Something went wrong!' + error);
        } else {
            req.body.user_password = hash;
            User.create(req.body, function (err, post) {
                if (err) {
                    throw new Error('Something went wrong!' + err);
                } else {
                    res.json(post);
                }
            });
        }
    });

});

偶尔也不会有失败的代码和cors。

最后它似乎是节点应用程序的问题而不是heroku。

干杯 Blazej

答案 1 :(得分:1)

我已经为此苦苦挣扎了一段时间。我会收到 CORS 错误...偶尔,当对相同的 API 执行相同的请求时。

开发工具中的网络选项卡提到缺少 CORS 源或其他与 CORS 相关的错误,因此这可能会误导您查看 CORS 设置。

但是,详细的服务器日志表明这不是 CORS 问题。问题来自服务器在请求后返回的错误。

就我而言,服务器发送的错误产生了 CORS 相关问题,但这些 CORS 问题并不是这里的核心问题。

总而言之,可以访问详细的服务器日志,并查看您如何处理服务器响应中的错误(例如您从请求正文中读取的未定义值等错误...)

如果我理解正确的话,上面的@Błażej Grzeliński 由于服务器响应中的错误管理不当而遇到了同样的问题。