代码之家  ›  专栏  ›  技术社区  ›  TKDev

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

  •  -4
  • TKDev  · 技术社区  · 8 年前

    为什么这会导致404错误

    (function(){
       var getownProperties = Object.keys(window);
       var propsLen = getownProperties.forEach(function(e,i,a){
           window[e] = undefined;
    });
    })()
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   deceze    8 年前

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

    如果你穿上这个 http://example.com , 窗位置=未定义 重定向到 http://example.com/undefined . 在大多数域上,这可能是一个不存在的页面,因此是404,在其他域上,您可能会触发一些其他行为。

    实际上,您无法替换许多/大多数全局属性,因为它们是作为不可配置的属性设置器实现的(这意味着函数将处理您尝试的赋值,在 window.location 触发重定向)。例如。:

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