当我请求此网址时:
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不同。
这种“重定向”怎么可能?第一个HTTP响应是404
,而不是3xx
。 Afaik,404
响应不触发浏览器发出的第二个HTTP请求。那么,服务器是否只是在没有任何请求的情况下推送第二个响应?如果是,为什么浏览器允许这样做?
自己查看:打开Chrome开发工具的“网络”标签,确保激活“保存导航时保存”标志。现在,加载第一个URL(从上面)。
答案 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);
}
我喜欢我如何提出问题,对其发表评论,然后回答它,所有人都没有参与。 :)