我刚刚开始学习JavaScript,所以请多多包涵。
我有两个html页面,例如page1.html和page2.html。两个页面上都有两个按钮,“下一页”和“上一页”。想法是打开序列中的下一页或上一页。我通过设置window.location.href新的file://URL来打开新页面。当然,除了尝试访问页面0或页面3时,浏览器会显示找不到文件。
因此,我决定fetch仅在response.okis是的情况下尝试使用和打开新页面true。这是我处理的功能button.onclick:
fetch(url).then(function(response) {
if (response.ok) {
window.location.href = url;
}
else {
alert("This is the last page.");
}
});
当页面存在时,它会按预期工作(它将打开页面)。但是,如果不这样做,控制台将显示1条警告和1条错误(并且根本不会更改页面,也不会触发alert二者之一):
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at file:///path/to/page3.html. (Reason: CORS request not http).
TypeError: NetworkError when attempting to fetch resource.
我四处搜索,发现出于安全原因阻止了非http请求(不允许网页随心所欲地访问本地文件)。
令我感到困惑的是,即使文件存在(第1页或第2页),它仍然是非HTTP请求,但仍然有效。为什么仅在文件不存在时才阻止它?为什么我要NetworkError和它在一起?
慕丝7291255
相关分类