如何在express.js中获取发起请求的域名?

我正在使用express.js,我需要知道发起呼叫的域名。 这是简单的代码

app.get( '/verify_license_key.json', function( req, res ) { // do something 

如何从reqres对象获取域名? 我的意思是我需要知道,如果API是由somesite.com或someothersite.com。 我试图做一个控制台reqres的console.dir,但我不知道从那里,也阅读文档,但它没有给我任何帮助。

您必须从HOST标题中检索它。

 var host = req.get('host'); 

HTTP 1.0是可选的,但是需要1.1。 而且,应用程序可以始终强加自己的要求。


如果这是为了支持跨源请求 ,您将改为使用Origin标头。

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

请注意,一些跨源请求需要通过“ 预检 ”请求进行validation:

 req.options('/route', function (req, res) { var origin = req.get('origin'); // ... }); 

如果你正在寻找客户的IP,你可以通过以下方式检索:

 var userIP = req.socket.remoteAddress; 
  • message.socket
  • socket.remoteAddress

请注意,如果您的服务器位于代理之后,这可能会给您代理的IP。 您是否可以获取用户的IP取决于代理传递的信息。 但是,它通常也在标题中。

代替:

 var host = req.get('host'); var origin = req.get('origin'); 

你也可以使用:

 var host = req.headers.host; var origin = req.headers.origin;