导致在许多网站上重定向到404的javascript函数

时间:2018-02-15 15:41:05

标签: javascript ecmascript-6 ecmascript-5

为什么会导致404错误

(function(){
   var getownProperties = Object.keys(window);
   var propsLen = getownProperties.forEach(function(e,i,a){
       window[e] = undefined;
});
})()

1 个答案:

答案 0 :(得分:1)

当您遇到window.location = undefined的情况时,您正在使用API​​打开其他网址。在这种情况下,undefined将被解释为字符串,即字符串'undefined',它会从当前页面更改为相对网址./undefined

如果您在http://example.com上尝试此操作,window.location = undefined会重定向到http://example.com/undefined。在大多数域名中,可能会出现不存在的页面,因此404,在其他域名上,您可能会触发其他一些行为。

您实际上无法替换许多/大多数全局属性,因为它们被实现为不可配置的属性设置器(意味着函数将处理您尝试的分配,在window.location触发重定向的情况下)。 E.g:



const foo = {
  set bar(value) {
    console.log("You can't replace me so easily,", value);
  }
};

foo.bar = 'baz';