私はまだNode JSとjavascriptとアプリを持っています。Ubuntu12.04のサーバーのホスト名を取得する必要がある設定ファイルがあります。
私は次のようなものを試しました:
window.location.hostname
しかし、それはうまくいきませんでした。以下のサンプルコード:
exports.config = {
app_name : [ window.location.hostname ]
}
文字列を使用すると、文字列は正常に読み込まれますが、これはGithubを介して管理されるため、アプリの読み込み時に区別する必要があります。
「os」モジュールのnode.jsドキュメントによる に従って、hostname()
関数を持つ「os」モジュールをロードする必要があります。
_var os = require("os");
var hostname = os.hostname();
_
ただし、それはホスト名のみです-ドメイン名(FQDN)なし。 FQDNを取得する簡単な方法はありません。 node.js DNS関数 を使用して、サーバーのIPアドレス(os.networkInterfaces()
で取得します。上記のドキュメントリンクを参照)を名前に変換することができます。唯一の問題は、サーバーが異なるインターフェースと名前を持っている可能性があるため、どちらを使用するかを決定する必要があることです。
window
オブジェクトを使用しようとしましたが、それはブラウザーのJavaScriptランタイム環境にのみ存在します。サーバー側のJavaScriptにはウィンドウがないため、window
オブジェクトはありません。 この質問をご覧ください:「node.jsにはブラウザのウィンドウオブジェクトと同等のものがあります」 。
この情報では、あなたの質問は少し奇妙です-ブラウザでは_window.location.hostname
_は現在のページがロードされたURLのホスト部分です。それをサーバーコンテキストにどのように変換しますか? node.jsで実行するコードは、定義上、まさにそのサーバーのものであるため、実際にはこの情報は必要ありません。特にマッシュアップ(さまざまなソースからのJSコード)を実行するとき、その情報は可変であるため、ブラウザーでそれが必要になる場合があります。サーバーでは、ローカルファイルシステムであることを常に知っています。
ところで、localhost
をホスト名としていつでも使用できます:)
http.createServer でサーバーを実行している場合、window.location.hostname
から取得するのと同じホスト名のみを取得できます。その場合、ホスト名はリクエストオブジェクトのプロパティの1つです。
request.headers.Host
私はこの答えを信用したいのですが、答えがわからなかったのでここにいるだけです。答えが投稿されているのを見つけました このSO answer で。