如何获取以快速.js方式发出请求的域?

2022-08-30 05:33:45

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

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

如何从 或 对象获取域?我的意思是我需要知道API是否由或调用。我尝试做一个 console.dir 两者,但我不知道从那里,也阅读了文档,但它没有给我任何帮助。reqressomesite.examplesomeothersite.examplereqres


答案 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 取决于代理传递的信息。但是,它通常也会在标头中。


答案 2

而不是:

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

您还可以使用:

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