2016-12-29 17 views
1

このクライアント側のアプリケーションをポート3000で実行していて、ExpressJSの上に構築されたAPI内でポート8080で実行されているものを要求した場合、リクエストはlocalhost:3000に由来していますか?Expressで経路を要求したドメインを取得

私は何人かの人々が使用していた聞いた:

req.get('host') //or origin 
req.headers.host //or origin 

originは存在せず、ホストがlocalhost:8080、サーバー側を返します。私はクライアントのアドレスが欲しかった。

ExpressJSでこの情報を入手するのはなぜ難しいですか? これはどのように行うのですか?

答えて

1

クライアント側の接続にはIPアドレスだけがあります。それはドメインから来ていません。 IPアドレスを逆引き参照して、ドメインに接続して登録されているかどうかを確認できます。しかし、ほとんどのクライアントは、特定のドメインではなく、一部のISPに属するIPアドレスを報告するだけです。

クライアント接続がサーバが稼働しているのと同じホストにあるかどうかを確認するには(localhostと書かれているので、あなたが意図したものと仮定します)、クライアントのIPアドレスとサーバIPを比較できます彼らが同じかどうかを確認してください。ローカルホストが報告できるさまざまな方法を正規化する必要があり、一方が実際のIPアドレスを報告している間に誰かが127.0.0.1を報告していないことを確認する必要があるかもしれません。

あなたが解決しようとしている実際の問題について説明すると、別の方法でお手伝いできる場合があります。

+0

こんにちは、私はあなたが意味することを理解しています。私は、私のAPI上でアクションを許可し、拒否するための黒と白のリストを作成したいと思います。私はreq.ipでipを読むことができ、次に私はいくつかの比較をすることができます。この情報には実際にはわかりませんが、多くの 'f'や ':'のようなデータがあります。 –

+0

@VictorFerreira - おそらくipV6アドレスです。 – jfriend00

関連する問題