req.headers.origin 未定义

req.headers.origin is undefined

对 Node 和 Express 相当陌生。我有一个 sails.js 应用程序,它依赖于了解请求的来源,因为我需要验证请求是否来自已注册的域。

我在日志中看到偶尔origin是空的,为什么会这样?依赖来源不是一个好主意属性,还有其他选择吗?

谢谢

如果用户来自 ssl 加密网站,来源可能会被隐藏。

此外:某些浏览器扩展程序从 http-request headers 中删除了来源和引荐来源网址,因此来源 属性 将为空。

您可能想要创建某种身份验证令牌并将其作为参数传递,而不是依赖于请求 headers。特别是因为 headers 可以是 faked/manipulated.

试试这个:

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();
}); 

试试这个

var host = req.headers.host;

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

如果您想获得客户请求的 url,请使用

req.headers.referer 可以帮助您。例如,我想从 xyz.com 调用 abcd.com API,然后在 abcd.com 处,referer 将打印 xyz.com,因为它是 url您正在请求。