2016-10-12 5 views
4

本番の問題をデバッグしているときに、URLへのGETリクエストが1人のユーザーに対して500 Internal Server Errorを返すが、ほかのユーザーには200 OKを返すことがわかりました。 500がキャッシュから提供されているように見えましたが、このバグを再現してからの試みは失敗しました。ブラウザで500 Internat Server Error応答をキャッシュできますか?

私の質問です:ブラウザでエラー応答をキャッシュすることは可能ですか?もしそうなら、それをサポートするブラウザと、それを複製するために必要なキャッシュヘッダは何ですか?

私の直感は、バグが修正されても引き続きサービスが拒否されるため、エラー応答をキャッシュしないでください。 Which HTTP status codes are cacheable?に基づいて、それは500のようにもキャッシュ可能ではないようです。キャッシュポリシーはブラウザ間で一貫して実装されていますか?

答えて

2

500 Internal Server Errorは、デフォルトででキャッシュ可能ではないと指定されています。参考のためにSection 6.1 of RFC 7231およびSection 6.6.1 500 Internal Server Error of RFC 7231を参照してください。 500がデフォルトでキャッシュ可能な場合、仕様によって明示的に定義されます。

しかし、明示的なキャッシングヘッダに応じて、この動作をオーバーライドすることができ、Section 3 of RFC 7234が言うので、完全に、あなたの問題に関連する他のものの中で、500応答がキャッシュされていることを、この発生します

注意しています上記の要件のいずれかは、キャッシュ制御拡張によって上書きすることができます。

私の推測では、500エラーが発生した場合には、何かがキャッシュヘッダーに混乱しているということです。

応答500のキャッシングを引き起こすには、Cache-Control応答ヘッダーにpublicフラグを設定しようとする可能性があります。

関連する問題