Node.js-获取请求访问的客户端的域/ URL

时间:2019-04-02 11:26:13

标签: node.js

我有两个node.js应用程序。一个后端api.domain和一个前端域。我用快递和护照。尝试登录时... api.domain应用程序中需要的是发出请求的域的域名/ URL。

但是我所有的尝试都失败了:

在api.domain应用中:

const curIP = req.ip;
const curHostname = req.hostname;

console.log('IP: '+curIP);
console.log('Hostname: '+curHostname);

const curGetHost = req.get('host');
console.log('curGetHost: ' +curGetHost);

const curHost = req.host;
console.log(curHost);       

var headerUserAgent = req.header('User-Agent');
console.log(headerUserAgent);

var origin = req.get('origin');
console.log(origin);

var headersOrigin = req.headers.origin;
console.log(headersOrigin);

var headersXForwarded = req.headers["x-forwarded-for"];
console.log(headersXForwarded);

var headersHost = req.headers["host"];
console.log(headersHost);

var remoteAddress = req.connection.remoteAddress;
console.log(remoteAddress);

它总是输出api.domain应用程序的域,而不是域应用程序。如何获得尝试访问api.domain应用程序的客户端的域/ URL?

编辑:这是我的要求:

request.post({
    headers: { 
      "Content-Type": "application/json",
      "Referer": DOMAIN 
    },
    url: URL_TARGET+"/v1/login",
    body: JSON.stringify({
       username: username,
       password: password
    })
 }, ...

1 个答案:

答案 0 :(得分:1)

您可以使用,来获取请求的来源。

您的应用程序很可能具有一个表单,该表单的操作指向登录服务器。这将导致浏览器直接打开URL,这就是为什么您获得登录服务器的主机。

尝试添加:

req.header('Referer');

如果这不起作用,请提供创建请求的前端代码部分。

编辑:问题很可能是您正在使用的库。它没有设置正确的标题。您的请求应设置Origin标头(和Referer标头)。尝试使用Axios或本机提取API

获取示例:

var ref = req.header('Referer');
console.log(ref);