Request: エンコードされたロケーションヘッダーが原因でリクエストがリダイレクトされない

作成日 2018年01月02日  ·  3コメント  ·  ソース: request/request

概要

こんにちは皆さん、 301を受け取った後、別のURLにリダイレクトする前にURLにリクエストを送信するのに問題があります。

再現する最も簡単な例

request('http://www.tanitbar.ru/menu.aspx?cat=6', function (error, response, body) {
  console.log('error:', error);
  console.log("response", response);
});,

1)最初の応答には301に等しいステータスコードが含まれています(つまり、 locationヘッダーからURLにリダイレクトする必要がありますが、エンコードされたロシア語の文字が含まれています: Салаты

2)このURL( http://www.tanitbar.ru/Салаты )が存在しないため、 404エラーが発生します

予想される行動




ステータスコードが200に等しいページのhtml本文を取得することを期待します

現在の動作



今のところ404を取得しています

考えられる解決策



curlは正常に機能し、301を受信した後に別のURLにリダイレクトします
curl "http://www.tanitbar.ru/menu.aspx?cat=6" -L 、(curlはデフォルトではリダイレクトされないため、 -Lオプションを渡す必要があります)

リダイレクトする前に、何らかの方法でロケーションヘッダーをデコードする必要があると思います(ちなみに、手動でデコードすることはできませんでした)

環境



JSからページのコンテンツを受信できませんでした。

あなたの環境

| ソフトウェア| バージョン
| ---------------- | -------
| リクエスト| ^ 2.83.0
| ノード| 8.7.0
| npm | 5.4.2
| オペレーティングシステム| Linux、Ubuntu

前もって感謝します!

stale

最も参考になるコメント

@mikealhttps ://github.com/nodejs/node/issues/17390が関連している可能性があります
ちなみに、そのBuffer.from(location, 'binary').toString('utf8')は私のために働きます。

全てのコメント3件

そのヘッダーのエンコーディングで何かをすることさえありますか? Node.jsのパーサーから正しく取得できると思います。

@mikealhttps ://github.com/nodejs/node/issues/17390が関連している可能性があります
ちなみに、そのBuffer.from(location, 'binary').toString('utf8')は私のために働きます。

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 貢献していただきありがとうございます。

このページは役に立ちましたか?
0 / 5 - 0 評価