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您正在请求。
对 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您正在请求。