我如何真正获得原产地?当我在router.get('/', ...)
下使用以下内容时,它只返回undefined。
var origin = req.get('origin');
(我正在尝试使用原始域作为查找键,然后构造正确的URL参数以发布到API)
答案 0 :(得分:2)
在请求路径中添加此expressJs中间件。确保它是遇到的第一个中间件请求。
/*
Creates origin property on request object
*/
app.use(function(req, res, next){
var protocol = req.protocol;
var hostHeaderIndex = req.rawHeaders.indexOf('Host') + 1;
var host = hostHeaderIndex?req.rawHeaders[hostHeaderIndex]:undefined;
Object.defineProperty(req, 'origin', {
get: function(){
if( !host )
return req.headers.referer?req.headers.referer.substring(0, req.headers.referer.length-1):undefined;
else
return protocol + '://' + host;
}
});
next();
});
//其中app是express app或express router object。
答案 1 :(得分:0)
var origin = req.get('Origin')
时, router.get
在res.header("Access-Control-Allow-Origin", <a single allowed domain here (or '*' for any domain)>);
下工作。
答案 2 :(得分:0)
有两种获取主机/来源的方法
第一种方法:
您必须从HOST header中检索它。
var host = req.get('host');
如果这是为了支持cross-origin requests,则应改用Origin
标头。
var origin = req.get('origin');
第二种方法:
您还可以使用:
var host = req.headers.host;
var origin = req.headers.origin;
附加说明:
如果您要查找客户端的IP,则可以使用以下方法进行检索:
var userIP = req.socket.remoteAddress;