109

Express.js を使用していますが、呼び出し元のドメインを知る必要があります。これは簡単なコードです

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

reqまたはresオブジェクトからドメインを取得するにはどうすればよいですか? APIがsomesite.comまたはsomeothersite.comによって呼び出されたかどうかを知る必要があるということです。req両方のconsole.dir を実行しようとしましたresが、そこからはわかりませんでした。ドキュメントも読んでみましたが、何の助けにもなりませんでした。

4

4 に答える 4

180

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 を探している場合は、次の方法で取得できます。

var userIP = req.socket.remoteAddress;

サーバーがプロキシの背後にある場合、これによりプロキシの IP が得られる可能性が高いことに注意してください。ユーザーの IP を取得できるかどうかは、プロキシが渡す情報によって異なります。ただし、通常はヘッダーにも含まれます。

于 2013-08-28T21:46:11.940 に答える
47

それ以外の:

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

次のものも使用できます。

var host = req.headers.host;
var origin = req.headers.origin;
于 2016-11-10T10:27:52.140 に答える
1

req.get('host')は非推奨になりました。使用すると が得られUndefinedます。

使用する、

    req.header('Origin');
    req.header('Host');
    // this method can be used to access other request headers like, 'Referer', 'User-Agent' etc.
于 2020-06-10T18:37:10.310 に答える