クライアントがリクエストしたURLをリクエストから取得したい。
現在私は使用しています:
var requestedUrl = req.protocol + '://' + req.host + ':3000' + req.url;
これは本当にいいことではありません。また、必要な URL フラグメント (#/something) も除外されます。
完全な URL を取得する方法はありますか? もしかしてヘッダー外?
よろしく
クライアントがリクエストしたURLをリクエストから取得したい。
現在私は使用しています:
var requestedUrl = req.protocol + '://' + req.host + ':3000' + req.url;
これは本当にいいことではありません。また、必要な URL フラグメント (#/something) も除外されます。
完全な URL を取得する方法はありますか? もしかしてヘッダー外?
よろしく
サーバー上で URL のフラグメント (ハッシュ セクション) を取得することはできません。ブラウザーによって送信されることはありません。
フラグメント識別子の機能は、URI の残りの部分とは異なります。つまり、その処理は、サーバーからの参加なしに、もっぱらクライアント側で行われます。もちろん、サーバーは通常、MIME タイプを決定するのに役立ち、MIME タイプはフラグメントの処理を決定します。エージェント (Web ブラウザーなど) が Web サーバーからリソースを要求すると、エージェントはサーバーに URI を送信しますが、フラグメントは送信しません。代わりに、エージェントはサーバーがリソースを送信するのを待ってから、ドキュメント タイプとフラグメント値に従ってリソースを処理します。
完全な URL を (フラグメント識別子なしで) 取得したい場合は、req.host ではなくポートを含む "Host" ヘッダーを使用するのが最善の方法ですが、それ以外は現在行っているのと同じです。
var requestedUrl = req.protocol + '://' + req.get('Host') + req.url;
私はあなたができることのほとんどすべてを恐れています。httpsを使用しない限り、プロトコルをhttpと見なすことができます。Raoulが言ったように、サーバー側の#以降は何も取得できません。これはブラウザ用です。
var requestedUrl = 'http://' + req.headers.host + ':3000' + req.url
これはあなたが探しているものですか?
req._parsedUrl.pathname
まだ使用していない場合は、次のことを行う必要があります。
var util = require('util'); // core module
console.log(util.inspect(req));
デバッグするには、そのようなデータを見つけます。