Python 2.7.3 を使用して、urllib2 を使用して http 投稿要求を実行しています。リクエストが HTTPError 例外を返しています (HTTP エラー 502: プロキシ エラー)。
Charles のメッセージ トラフィックを見ると、次のことが起こっていることがわかります。
- urllib2 を使用して HTTP 要求 (POST /index.asp?action=login HTTP/1.1) を送信します。
- リモート サーバーは、ステータス 303 とロケーション ヘッダー ../index.asp?action=news で応答します。
- urllib2 は get リクエストの送信を再試行します: (GET /../index.asp?action=news HTTP/1.1)
- リモート サーバーはステータス 502 (プロキシ エラー) で応答します。
502 応答には、応答本文に次のものが含まれます。
したがって、これは、リモート サーバーのネットワーク上のプロキシ サーバーが、要求内の "/../index.asp" URL を認識し、それを誤って解釈して、私の要求を不適切な URL で送信することを意味すると考えています。
ブラウザー (Chrome) で同じ要求を行うと、再試行は GET /index.asp?action=news に送信されます。したがって、Chrome は URL から先頭の「/..」を削除し、リモート サーバーは有効な応答を返します。
これは urllib2 のバグですか? 再試行で URL の「/..」が無視されるようにできることはありますか? または、この問題を解決する他の方法はありますか? urllib2 のバグかもしれないと考えて、urllib2 をリクエストと交換しましたが、リクエストは同じ結果をもたらしました。もちろん、それはリクエストが urllib2 で構築されているためかもしれません。
助けてくれてありがとう。