web-dev-qa-db-ja.com

プロキシ環境でPOST値を失うWebフォーム

ASP.NETフォーム(ログインページ)があり、サーバーへの値をPOST(windows、IIS 6)すると、リクエストはプロキシとPOST pareametersは最終的に失われ、POSTパラメーターがないため最終的にページが更新されます。

問題は、これは一定の問題ではないことです。通常、正常にログインできる場合があり、一般的にブラウザの一時ファイルをクリアすると正常に動作します。

Fiddlerを実行して、何が起こっているのかを確認しました。基本的には次のようになります。

  • セッションID、POSTデータなどを含む通常のPOST要求。応答(HTTP 407)にはProxy-Authenticate:NegotiateおよびProxy-Support:Session-Based-Authenticationヘッダーが含まれます。

  • サーバーへの次のリクエストには、長い文字列(base64と思う)を含むProxy-Authorization:Negotiateヘッダーが含まれます。このリクエストには、POST値は含まれません。応答は別の407であり、実際にFiddlerを見ると、ヘッダーとして「HTTP/1.1 407 Proxy Authentication Required(Access is denied。)」が表示されています。

  • 次に、Proxy-Authorizationヘッダーを含む3番目の要求があり、200 OKを返しますが、もちろんPOST値は送信されませんでした。後続の要求はHTTP/1.1 407 Proxy Authentication Required(The ISAサーバーは、要求を満たすために承認が必要です。Webプロキシフィルターへのアクセスが拒否されました。)応答に続いて、2番目に成功したが空の要求。

クライアントは、プロキシが断続的であり、アプリケーション内の他のすべてのページ(多くのWebフォームを含む)が正常に機能するため、プロキシをバイパスさせません。

私が何を試すことができるかについてのアイデアはありますか?

3
Moxy

プロキシであると思われる場合は、プロキシ管理者にいくつかの失敗したリクエストのログを見てもらい、実際のリクエストと比較してください。

特定のコンテンツを検索するようにプロキシが設定されている可能性があり、見つかった場合はダンプします。

ただし、クライアントで何かを行うと(キャッシュファイルをクリアすることで)修正されるので、プロキシではなく、クライアントの構成(プロキシと連携している可能性があります)に関係している可能性があります。

説明したFiddlerの問題は、純粋なクライアント側の問題のように聞こえます。問題があるのが(1人のユーザー)(1台のコンピューター)(1つの環境)にある場合は、おそらくそのクライアントだけです。クライアントがプロキシ認証後に投稿するときにフォーム値を送信していない場合、それは基本的にクライアントのバグです-それらはフォーム値を送信する必要があります。 IE設定のリセット操作を実行すると、これに役立つ場合があります(また、すべてのアドインなどを確認し、アドオンなしモードで試してください)。

プロキシログ間で、クライアントキャプチャ(最初のトラブルシューティングにはおそらくFiddlerで問題ありませんが、完全に透過的なプロキシではないことに注意してください。 、どこかが間違っているという証拠があるはずです。

1
TristanK