一尘不染

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

node.js

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

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

如何从reqres对象获取域?我的意思是我需要知道api是由somesite.com还是someothersite.com调用的。我试着做两者的console.dir
reqres,但我还是不知道从那里,也可以参考文档,但它给了我没有帮助。


阅读 260

收藏
2020-07-07

共1个答案

一尘不染

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

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

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


如果这是为了支持跨域请求,则应改用Origin标头。

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

请注意,某些跨域请求需要通过预检请求进行验证:

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

如果要查找客户端的IP,可以使用以下方法检索该IP:

var userIP = req.socket.remoteAddress;

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

2020-07-07