0

この URL をリクエストすると:

http://www.w3.org/TR/html5/embedded-content-1.html#the-img-element

サーバーは404(ファイルが見つかりません) HTTP 応答で応答します。ただし、しばらくすると別の URLがブラウザーに読み込まれます。つまり、次のようになります。

http://www.w3.org/TR/html5/the-img-element.html#the-img-element

サーバーは基本的に、最初に要求された URL とは異なる URL を持つ2 番目の HTTP 応答を送信します。

ここに画像の説明を入力

この「リダイレクト」はどのように可能ですか? 最初の HTTP 応答は404ではなく でした3xx。Afaik、404応答はブラウザーによる 2 番目の HTTP 要求をトリガーしません。では、サーバーはリクエストを行わずに 2 番目のレスポンスをプッシュするだけですか? はいの場合、ブラウザがそれを許可するのはなぜですか?


自分の目で確かめてください: Chrome の開発ツールの [ネット] タブを開き、[ナビゲーション時にログを保持する] フラグが有効になっていることを確認します。ここで、最初の URL (上から) を読み込みます。

4

1 に答える 1

1

ここで私自身の質問に答えさせてください。

4042 番目の HTTP 要求は、応答によって返されたページの一部として実行される JavaScript コードによって開始されます。そのページには次のものが含まれます。

<body onload="fixBrokenLink(404)">

その後:

function fixBrokenLink(is404) {
    if (window.location.hash.length < 1 && !is404)
        return;

    var fragid = window.location.hash.substr(1);
    if (fragid && document.getElementById(fragid))
        return;

    var script = document.createElement('script');
    script.src = 'fragment-links.js';
    document.body.appendChild(script);
}

質問をして、コメントを付けてから、他の誰の参加もなしに回答したかが気に入っています。:)

于 2012-12-12T18:53:46.260 に答える