Expressで完全なURLを取得するにはどうすればいいですか? 質問する

Expressで完全なURLを取得するにはどうすればいいですか? 質問する

サンプルURLは

http://example.com/one/two

そして私は次のルートを持っていると言います

app.get('/one/two', function (req, res) {
    var url = req.url;
}

の値urlは になります/one/two

Express で完全な URL を取得するにはどうすればよいですか? たとえば、上記の場合、 を受け取りたいですhttp://example.com/one/two

ベストアンサー1

  1. プロトコルは として利用可能ですreq.protocolドキュメントはこちら

    1. Express 3.0より前では、 が設定されていて値 を持っていることがhttp確認されない限り、プロトコルは であると想定できます。その場合、それがプロトコルであることがわかります。req.get('X-Forwarded-Protocol')https
  2. ホストはreq.get('host')ゴパルが示唆した通りである

  3. URL に非標準ポートが必要ないことを願いますが、知っておく必要がある場合は、app.listenサーバーの起動時に渡されるものなので、アプリケーションの状態に含めることになります。ただし、非標準ポートでのローカル開発の場合、Chrome はホスト ヘッダーにポートを含めるため、たとえばreq.get('host')を返しますlocalhost:3000。したがって、少なくとも標準ポートの運用サイトで Express アプリを直接参照する場合 (リバース プロキシなし)、ヘッダーはhostURL のポートに関して適切な処理を実行するようです。

  4. パスはreq.originalUrl(@pgrassant に感謝) から取得されます。これにはクエリ文字列が含まれていることに注意してください。req.url と req.originalUrl のドキュメントはこちら. URL で何を行うかによって、originalUrlは と比較して正しい値になる場合とそうでない場合がありますreq.url

これらをすべて組み合わせて絶対 URL を再構築します。

  var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;

おすすめ記事