WebExtensionでwebRequest-APIを使用して、クライアントからのリクエストを監視しています。これは非常にうまくいきますが、APIはリダイレクトの場合には期待どおりに動作しません。webRequest APIリダイレクトは親リクエストのhttpメソッドを使用します
POST
が発行され、302 FOUND
と新しい場所が返されます。このリダイレクトに続いて(Firefox 57、他のバージョンや他のブラウザ - たとえばChrome - 同じように動作します)、新しい場所にGET
が発行されます。
残念なことにWebRequestクラス-APIは、異なる動作:それはGET
でなければならないのに対し、それは、あまりにも、(正確である)第POST
をトレースが、POST
として第2の要求を処理するよりも。これは、APIが私のブラウザで実際に行ったことのようなものをトレースするため、重大な問題です。
このシナリオ(ブラウザ部分)は、this link to surfnet.nlに従い、IDPフォームを選択することで再現できます(例:Academisch Medisch Centrum)。
ですから、長いストーリー:なぜwebRequest-APIはブラウザの動作とは異なる動作をしますか?ブラウザの動作を正確に追跡する方法はありますか?
興味深いことにWebRequestクラス-APIは、正しくregarding the documentationそれを行う可能性があります:
仕様は、すべてのユーザーではない方法を必要とし、リダイレクトが行われた場合、本体は、を変更してはならない、場合でも、 - エージェントはここに準拠します [ブラウザは明らかにメソッドを変更します!]、バグのあるソフトウェアが見つかることがあります。したがって、GETまたはHEADメソッドに対する応答としてのみ302コードを設定し、その場合はメソッドの変更が明示的に禁止されているため、代わりに307一時リダイレクトを使用することをお勧めします。 メソッドをGETに変更する場合は、303を使用します。代わりに「その他」を参照してください。
EDITは:ブラウザは、原因歴史的な理由に302
の方法を変更した場合、それはRFC 2616矛盾さえカントーとして それは
- https://stackoverflow.com/a/8139246/594832
- https://trac.ietf.org/trac/httpbis/ticket/160 ...らしいです
- https://stackoverflow.com/a/8138447/594832
質問は残っています。webRequest-APIを同じように動作させるにはどうすればよいですか?
https://bugzilla.mozilla.org – Smile4ever
でバグを開いてください。@ Smile4everあなたのコメントをありがとうございますが、実際にはバグではないと思います。 – khlr
あなたの質問への回答を望むなら、それは実際にはバグではないと思っても、おそらく質問するのに最適な場所です。 – Smile4ever