【发布时间】:2017-06-02 16:08:34
【问题描述】:
我想使用请求模块提取传入请求的域名。我试着看一下
request.headers,
request.headers.hostname
没有运气。有什么帮助吗?
【问题讨论】:
-
如果您使用
request()模块,那么您正在向另一个站点发出请求,因此您应该已经知道域名。从请求返回的响应中没有域名。
标签: node.js express npm request
我想使用请求模块提取传入请求的域名。我试着看一下
request.headers,
request.headers.hostname
没有运气。有什么帮助吗?
【问题讨论】:
request() 模块,那么您正在向另一个站点发出请求,因此您应该已经知道域名。从请求返回的响应中没有域名。
标签: node.js express npm request
你应该使用request.headers.host。
【讨论】:
所以您想要发出请求的客户端的域名?
由于 Express 只为您提供他们的 IP 地址,因此您必须 reverse-lookup 该 IP 地址才能获取主机名。从那里,您可以提取域名。
在中间件中
const dns = require('dns');
...
app.use(function(req, res, next) {
dns.reverse(req.ip, function(err, hostnames) {
if (! err) {
console.log('domain name(s):', hostnames.map(function(hostname) {
return hostname.split('.').slice(-2).join('.');
}));
}
next();
});
});
但是,非常重要的免责声明:为每个请求进行 DNS 查找可能会对性能产生严重影响。
【讨论】:
我想通了。客户端域在原始可用。
request.headers.origin
例如:
if(request.headers.origin.indexOf('gowtham') > -1) {
// do something
}
谢谢!
【讨论】: