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

Javascript 如何在express.js中获取发起请求的域?,javascript,node.js,express,Javascript,Node.js,Express,我正在使用express.js,我需要知道发起调用的域。这是简单的代码 app.get( '/verify_license_key.json', function( req, res ) { // do something 如何从req或res对象获取域? 我的意思是我需要知道api是由somesite.com还是someothersite.com调用的。 我试着做了req和res的console.dir,但是从那里我不知道,也阅读了文档,但没有给我任何帮助。你

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

app.get(
    '/verify_license_key.json',
    function( req, res ) {
        // do something
如何从
req
res
对象获取域? 我的意思是我需要知道api是由somesite.com还是someothersite.com调用的。
我试着做了
req
res
的console.dir,但是从那里我不知道,也阅读了文档,但没有给我任何帮助。

你必须从

它在HTTP 1.0中是可选的,但在1.1中是必需的。而且,应用程序总是可以强加自己的要求


如果这是为了支持,您可以使用
Origin
标题

var origin = req.get('origin');
请注意,某些跨来源请求需要通过以下方式进行验证:


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

var userIP = req.socket.remoteAddress;
请注意,如果您的服务器位于代理之后,这可能会为您提供代理的IP。您能否获得用户的IP取决于代理传递的信息。但是,它通常也会出现在标题中。

而不是:

var host = req.get('host');
var origin = req.get('origin');
您还可以使用:

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

在Express4.x中,您可以使用
req.hostname
,它返回域名,不带端口。i、 e:

// Host: "example.com:3000"
req.hostname
// => "example.com"

请参阅:

最近在获取“Origin”请求头时遇到了一个问题,然后我发现了这个问题。但是对结果非常困惑,
req.get('host')
被弃用,这就是为什么给出
未定义的
。 使用


尝试:
req.host
req.get('host')
node.js:
req.headers[“x-forwarded-for”]| | req.connection.remoteAddress
将覆盖代理背后的基础,负载平衡器…我得到了以下警告:express deprecated req.host:Use req.hostname而不是index.js:20:8但这不给我api的主机吗?这可能是因为我在本地执行此操作,并且我将api.time.ly设置为解析为127.0.0.1,并且我正在进行的调用来自本地主机,但如果我使用它,则主机是“api.time.ly”我需要知道正在呼叫我的域名。我将在一个实时站点上测试它。@NicolaPeluchetti我想我不明白你所说的“调用我的域”是什么意思。HTTP客户端通常不会在请求中提供自己的主机名。这是为了什么?我有一个位于api.time.ly的中央api。此api由安装我们wordpress插件的不同客户端网站调用。所以我们可以拥有并调用我们的api。在API中,如果调用是从或从发出的,我将能够获得什么?我看到一个标题“用户代理”:“WordPress/3.6;http://localhost/wordpress_clean“我应该解析它吗?如果没有传递域,这不是问题,我可以将它添加到API调用中。@NicolaPeluchetti您可以尝试拆分和用户代理,或者要求它作为请求中的数据。但是,我想说,这样更适合于识别客户机。这将返回您接收请求的服务器的主机名。只有当您在同一台服务器上运行API和网站,并且发起方和接收方是同一台主机时,它才会起作用。获取
未定义的
会给出127.0.0.1:3000
var host = req.headers.host;
var origin = req.headers.origin;
// Host: "example.com:3000"
req.hostname
// => "example.com"
    req.header('Origin');
    req.header('Host');
    // this method can be used to access other request headers like, 'Referer', 'User-Agent' etc.