サンプルURLは
そして私は次のルートを持っていると言います
app.get('/one/two', function (req, res) {
var url = req.url;
}
の値url
は になります/one/two
。
Express で完全な URL を取得するにはどうすればよいですか? たとえば、上記の場合、 を受け取りたいですhttp://example.com/one/two
。
ベストアンサー1
プロトコルは として利用可能です
req.protocol
。ドキュメントはこちら- Express 3.0より前では、 が設定されていて値 を持っていることが
http
確認されない限り、プロトコルは であると想定できます。その場合、それがプロトコルであることがわかります。req.get('X-Forwarded-Protocol')
https
- Express 3.0より前では、 が設定されていて値 を持っていることが
ホストは
req.get('host')
ゴパルが示唆した通りであるURL に非標準ポートが必要ないことを願いますが、知っておく必要がある場合は、
app.listen
サーバーの起動時に渡されるものなので、アプリケーションの状態に含めることになります。ただし、非標準ポートでのローカル開発の場合、Chrome はホスト ヘッダーにポートを含めるため、たとえばreq.get('host')
を返しますlocalhost:3000
。したがって、少なくとも標準ポートの運用サイトで Express アプリを直接参照する場合 (リバース プロキシなし)、ヘッダーはhost
URL のポートに関して適切な処理を実行するようです。パスは
req.originalUrl
(@pgrassant に感謝) から取得されます。これにはクエリ文字列が含まれていることに注意してください。req.url と req.originalUrl のドキュメントはこちら. URL で何を行うかによって、originalUrl
は と比較して正しい値になる場合とそうでない場合がありますreq.url
。
これらをすべて組み合わせて絶対 URL を再構築します。
var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;