4

少なくとも IE 9 では、時折、ブラウザは Web ブラウザによって提供されたエンティティ本体を表示しないことを決定し、代わりに独自のカスタム ページを表示します。403、404、500 などのいくつかのエラーに対してこれを行うようです。

ただし、サーバーから送信されたエンティティ本体が表示される場合があります。

応答を表示するかどうかを決定するために使用する条件は何ですか?

私がしたこと:クエリ文字列を介して、返すコードに関する引数を受け取り、(ステータス コードのcode)を返すマイナーな Web サーバーを構築しました。

<!DOCTYPE html>
<html>
<head></head>
<body>
<h1>Response {code}</h1>
Hi. I'm an <em>HTML document</em>. I should be the response of a code {code}.
</body></html>

/my-page?code=400、などを介してこれを呼び出します/my-page?code=500。ページを取得することもあれば、取得しないこともあります。Chrome は、ステータス コードが送信されていることを確認します。(そしてページを表示します。)

4

1 に答える 1

3

これは明らかに設計上壊れています。状況、契約条項:

  • エラーは [400, 403, 404, 405, 406, 408, 409, 410, 500, 501, 505] のいずれかです。
  • エンティティ本体のバイト単位のサイズが、によって指定されたしきい値未満ですHKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\ErrorThresholds

デフォルトにも注意してください。

デフォルトのしきい値は、応答コード [403、405、410] の場合は 256 バイト、応答コード [400、404、406、408、409、500、501、505] の場合は 512 バイトです。いずれかのステータス コードのレジストリ エントリが欠落している場合、そのしきい値はデフォルトで 512 バイトになります。

http://blogs.msdn.com/b/ieinternals/archive/2010/08/19/http-error-pages-in-internet-explorer.aspx

于 2013-05-24T18:10:02.710 に答える