元标记和javascript浏览器重定向 - 哪个优先?

时间:2013-04-11 18:42:54

标签: javascript redirect curl meta-tags

我正在开发PHP,使用Curl跟踪到最终目的地的链接。我偶尔会到达一个带有元标记重定向或javascript重定向的页面,并希望能够足够聪明地跟随它们。如果一个页面都有两个,我应该遵循哪个(即哪个会首先触发)?

示例元标记刷新:

<meta http-equiv="refresh" content="0;URL='http://location1.com/'">

示例javascript刷新:

<script>
window.location.href='http://location2.com/';
</script>

3 个答案:

答案 0 :(得分:8)

刚刚创建了这个文件(我们称之为test.html

<html>
  <head>
    <meta http-equiv="refresh" content="0;URL='http://location1.com/'">
    <script type="text/javascript">
      window.location.href='http://location2.com/';
    </script>
  </head>
  <body>
    Hello
  </body>
</html>

您可以复制并保存它。打开后,您将被定向到http://location2.com

请注意,如果<script>标记不在<head>标记中,则<meta>标记会先执行。

答案 1 :(得分:3)

Hexblot的回答是一个好主意 - 如果你想看看会发生什么,试试吧。但是,当我尝试使用时,Chrome转到了location2,IE转到了location1。所以它似乎是依赖于实现的。您可能希望将此作为脚本上的可配置选项。但实际上,任何在元标记中都有一个重定向而在脚本中有不同重定向的网站,(a)不太可能,以及(b)编码不好,因为他们不知道你最终会在哪里。

答案 2 :(得分:0)

我认为没有一种好的方法可以检测哪一个会先发射。

元标记具有content属性,可用于指定超时。但是,在JavaScript中几乎不可能检测到重定向何时会发生,因为有无限的方法来编写它。至少没有执行它。例如:

var t = 100;
setTimeout(function () {
    window.location.href='http://location2.com/';
}, t * 2);