我有一个nodejs后端,我需要知道用户来自哪里。 如果他来自本地主机(邮递员)或他的网站HTTP请求。 我需要知道他的用户域不像“ http://localhost/”或“ http://user-website.com”,甚至不是来自Google搜索!从他来吗?
,我尝试了用户req.get('origin)
,但始终返回undefined
答案 0 :(得分:1)
您必须连接“ 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);
答案 1 :(得分:0)
使用req.headers['user-agent']
来查看它是否是邮递员代理。
答案 2 :(得分:0)
为了知道请求是来自localhost
还是远程客户端,您需要获取客户端的IP地址。 Express中的示例:
app.get('/', (req, res) => {
const ipAddress = req.connection.remoteAddress;
// ...
});
有关获取IP here的更多文档,请同时查看this other question on the subject。
基本上,如果请求来自localhost
,则ipAddress
将是::1
或其他localhost IP address,但如果不是,它将看起来像一个公共IP地址,例如173.194.79.101
(google.com的IP)。