使用javascript产生无限循环document.location跳转的browser响应分析

我对javascript的windows对象十分熟悉,常用的document对象在处理页面url跳转和使用DOM技术操作页面元素(文档对象模型)时会使用到。该对象常用的有关域名或URL的属性或方法如下:

document.location 这个对象包含了当前URL的信息 
location.host 获取port号 
location.hostname 设置或获取主机名称 
location.href 设置或获取整个URL 
location.port设置或获取URL的端口号 
location.search 设置或获取href属性中跟在问号后面的部分

windows对象和document对象是有很大差别的,虽然在域名跳转这个简单的功能实现方面(我记得之前专门写过这一篇关于这个的文章,如有需要请自行查找),二者都可胜任。但现在先不讨论这些大的差别,因为url跳转可能产生的问题就是,如果前端人员将两个页面互相设置跳转,若大量用户仍然不关闭网页,则可能消耗大量带宽,增加云计算的成本。这种情况会发生吗?

网友说,url跳转将出现"此网页包含重定向循环"问题。

我马上连接了服务器,直接用notepad写了两个简单页面,打算为此做个尝试。

首先是第一个网页文件,我把她命名为test1.html,文件内容如下:

<html>
<head>
 <title>test1</title>
</head>
<body>
<a >test1</a>
<script type="text/javascript">
 document.location.href = "test2.html";
</script>
</body>
</html>

从上面文件内容可以看出,下面是test2.html,放在同一目录:

<html>
<head>
 <title>test2</title>
</head>
<body>
<a >test2</a>
<script type="text/javascript">
 document.location.href = "test1.html";
</script>
</body>
</html>

我把这两个文件放在服务器的某个目录里(当然现在已经删除),且给予一个独立的程序池,指定其能够占用的系统资源上限,基本不影响其它运行的服务。

经过实测,不管是PC端的Windows Edge和谷歌chrome,还是手机浏览器,都没有对此循环重定向做出提示。

她们都只是无限地跳转,分别显示test1和test2字样。

可见,这种循环重定向造成的危害是极大的。在网站运营维护中,如果有需要使用跳转的情况,一定要注意避免出现这种意外情况。

值得一提的是,大部分浏览器对JavaScript脚本window.open方法默认不执行,弹出对话框在求用户确认后才执行。

这就使得一个有趣而危险的操作无法完成:将document.location.href  = 改为window.open执行。

浏览器的这种处理方式有效避免了危害系统稳定的循环窗口弹出情形。

 

《使用javascript产生无限循环document.location跳转的browser响应分析》上有3条评论

  1. 如果对“此网页包含重定向循环”问题,清除Cookie或允许第三方Cookie能够解决,那可能是客户端计算机的配置问题,而不是服务端有问题。

    1. 我会尝试去用asp语言进行跳转。
      浏览器对alert方法不进行屏蔽,所以就出现整人网页吧。
      类似于open循环弹出,用bat循环“start cmd”,危害更大。

发表评论

电子邮件地址不会被公开。 必填项已用*标注