req.headers.origin未定义

时间:2015-04-09 06:41:46

标签: node.js express sails.js

Node和Express相当新。我有一个sails.js应用程序,它依赖于知道请求的来源,因为我需要对请求进行身份验证来自已注册的域。

我在日志中看到原点偶尔是空的,为什么会发生这种情况?依赖原始属性不是一个好主意,还有其他选择吗?

由于

3 个答案:

答案 0 :(得分:11)

如果用户来自ssl加密网站,则可能隐藏原点。

另外:某些浏览器扩展会从http请求标头中删除origin和referer,因此origin属性将为空。

您可能希望创建某种身份验证令牌并将其作为参数传递,而不是依赖于请求标头。特别是因为标题可以伪造/操纵。

答案 1 :(得分:1)

尝试一下

var host = req.headers.host;

OR

var host = req.get('host');

答案 2 :(得分:0)

尝试一下:

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