这个HTTP“重定向”如何工作?

时间:2012-12-12 18:47:14

标签: http redirect http-status-code-404

当我请求此网址时:

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

服务器以404(未找到文件)HTTP响应进行响应。但是,片刻之后,不同的网址会加载到浏览器中,即:

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

服务器基本上发送第二个HTTP响应,其URL与最初请求的URL不同。

enter image description here

这种“重定向”怎么可能?第一个HTTP响应是404,而不是3xx。 Afaik,404响应触发浏览器发出的第二个HTTP请求。那么,服务器是否只是在没有任何请求的情况下推送第二个响应?如果是,为什么浏览器允许这样做?


自己查看:打开Chrome开发工具的“网络”标签,确保激活“保存导航时保存”标志。现在,加载第一个URL(从上面)。

1 个答案:

答案 0 :(得分:1)

让我在这里回答我自己的问题。

第二个HTTP请求由JavaScript代码启动,该代码作为404响应返回的页面的一部分执行。该页面包含:

<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);
}

我喜欢我如何提出问题,对其发表评论,然后回答它,所有人都没有参与。 :)