如何在express.js中获取发起请求的域名?
我正在使用express.js,我需要知道发起呼叫的域名。 这是简单的代码
app.get( '/verify_license_key.json', function( req, res ) { // do something
如何从req
或res
对象获取域名? 我的意思是我需要知道,如果API是由somesite.com或someothersite.com。 我试图做一个控制台req
和res
的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;