2016-10-27 25 views
-1

ノードv6.2.0を使用すると、4.14.0を表現します。ノードエクスプレス - エンコードされたURLクエリ文字列をサポートする方法

としてサイトのURLを入力するときは:「http://site.name/?key=value」、私がして、クエリの値を取得することができるよ:

app.get('/', function (req, res) { 
    // req.query.key equals 'value' 
}); 

しかし、エンコードされたURLを入力するとき:「http://site.name/?key%3Dvalue」を、req.queryオブジェクトは次のようになります:

{ 'key%3Dvalue' : '' } 

URLを正しく解析するためにノードreq.queryを作成する方法はありますか? いいえの場合、このクエリ値を抽出するのに推奨される方法は何ですか?

+1

正しく解析しています。 '= 3D 'としてエンコーディングする全体のポイントは、キーを値から除算する文字ではなく、* data *として扱われるようになっています。さもなければ、 '= '記号を提出する方法はありません。 – Quentin

+1

デリミタで値の一部ではなく、 "="をエンコードする必要はありません。 – Sikorski

答えて

0

コメントから理解されるように、解析は正しく、キーデリミタに%3Dをデコードしてはいけません。

この場合、(クライアントのバグのために)エンコードされたURLのアドレスに到達しようとしたワイルドカードが既に存在しました。 私は '%3D'を '='として解析するために、サーバ上に一時ハンドラを追加しました。

const value = req.query.key || 
    url.parse(req.url.replace('%3D', '='), true).query.key; 

クライアントは修正して新しいバージョンをロールアウトされます場合は、私は、サーバーからこのハンドラを削除し、のみreq.query.keyそれがあるべきとして使用することができます。

関連する問題