0

我有一个 nodejs 的后端,我需要知道用户来自哪里。如果他来自本地主机(邮递员)或他的网站 HTTP 请求。我需要知道他的用户域不介意像' http://localhost/ '或' http://user-website.com '甚至来自谷歌搜索!从他那里来?

,我试过用户req.get('origin),但总是返回未定义

4

3 回答 3

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);
于 2019-03-23T09:18:36.497 回答
0

为了知道请求是来自localhost远程客户端还是来自远程客户端,您需要获取客户端的 IP 地址。Express 中的示例:

app.get('/', (req, res) => {
  const ipAddress = req.connection.remoteAddress;
  // ...
});

有关在此处获取 IP 的更多文档,还请查看有关该主题的其他问题

基本上,如果请求来自localhost, ipAddresswill be ::1or other localhost IP address,但如果不是,它将看起来像一个公共 IP 地址,例如173.194.79.101(google.com 的 IP)。

于 2019-03-23T12:17:19.173 回答
0

用于req.headers['user-agent']查看它是否是邮递员代理。

于 2019-03-23T10:33:51.493 回答