我有一个 nodejs 的后端,我需要知道用户来自哪里。如果他来自本地主机(邮递员)或他的网站 HTTP 请求。我需要知道他的用户域不介意像' http://localhost/ '或' http://user-website.com '甚至来自谷歌搜索!从他那里来?
,我试过用户req.get('origin)
,但总是返回未定义
我有一个 nodejs 的后端,我需要知道用户来自哪里。如果他来自本地主机(邮递员)或他的网站 HTTP 请求。我需要知道他的用户域不介意像' http://localhost/ '或' http://user-website.com '甚至来自谷歌搜索!从他那里来?
,我试过用户req.get('origin)
,但总是返回未定义
您必须连接“url”模块
var http = require('http');
var url = require('url') ;
http.createServer(function (req, res) {
var hostname = req.headers.host; // hostname = 'localhost:8080'
var pathname = url.parse(req.url).pathname; // pathname = '/MyApp'
console.log('http://' + hostname + pathname);
res.writeHead(200);
res.end();
}).listen(8080);
为了知道请求是来自localhost
远程客户端还是来自远程客户端,您需要获取客户端的 IP 地址。Express 中的示例:
app.get('/', (req, res) => {
const ipAddress = req.connection.remoteAddress;
// ...
});
有关在此处获取 IP 的更多文档,还请查看有关该主题的其他问题。
基本上,如果请求来自localhost
, ipAddress
will be ::1
or other localhost IP address,但如果不是,它将看起来像一个公共 IP 地址,例如173.194.79.101
(google.com 的 IP)。
用于req.headers['user-agent']
查看它是否是邮递员代理。