我有两个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
})
}, ...
答案 0 :(得分:1)
您可以使用,
来获取请求的来源。
您的应用程序很可能具有一个表单,该表单的操作指向登录服务器。这将导致浏览器直接打开URL,这就是为什么您获得登录服务器的主机。
尝试添加:
req.header('Referer');
如果这不起作用,请提供创建请求的前端代码部分。
编辑:问题很可能是您正在使用的库。它没有设置正确的标题。您的请求应设置Origin标头(和Referer标头)。尝试使用Axios或本机提取API
获取示例:
var ref = req.header('Referer');
console.log(ref);