そのため、ここでは簡単なものを見逃しているかもしれませんが、応答を送信する要求オブジェクトが要求されたホスト名を取得する方法を見つけることができないようです。
ユーザーが現在node.jsからアクセスしているホスト名を把握することは可能ですか?
HTTPリクエストについて話している場合、リクエストホストは次の場所にあります。
request.headers.Host
しかし、それは着信リクエストに依存しています。
詳細は http://nodejs.org/docs/v0.4.12/api/http.html#http.ServerRequest
マシン/ネイティブ情報を探している場合は、プロセスオブジェクトを試してください。
Osモジュールを使用できます:
var os = require("os");
os.hostname();
http://nodejs.org/docs/latest/api/os.html#os_os_hostname を参照してください
警告:
iPアドレスを使用できる場合-マシンには複数のネットワークカードがあり、指定しない限り、ノードはそれらすべてをリッスンするため、リクエストがどのNICで受信されたかはわかりません入ってくる。
ホスト名はDNSの問題です-複数のDNSエイリアスが同じマシンを指すことを忘れないでください。
Linuxで完全修飾ドメイン名が必要でHTTPリクエストがない場合は、次を使用できます。
var child_process = require("child_process");
child_process.exec("hostname -f", function(err, stdout, stderr) {
var hostname = stdout.trim();
});
まず、答えを提供する前に、ヘッダーを信頼することで、フィッシングなどのセキュリティ脆弱性への扉が開かれているという事実について前もって述べたいと思います。そのため、リダイレクトの目的で、最初にURLが承認されていることを検証せずにヘッダーの値を使用しないでください。
次に、オペレーティングシステムのホスト名がDNSのホスト名と一致するとは限りません。実際、1つのIPに複数のDNS名がある場合があります。そのため、HTTPの目的では、オペレーティングシステム構成でマシンに割り当てられたホスト名が使用可能であるという保証はありません。
私が考えることができる最良の選択は、HTTPリスナーのパブリックIPを取得し、DNSを介してその名前を解決することです。詳細については、dns.reverse
メソッドを参照してください。ただし、IPには複数の名前が関連付けられている場合があることに注意してください。