0

以下是我网站的 .js 文件的功能,该文件包含在网页的 head 部分中,test.html

function test_redirect() {
    var urlCurrent = document.URL;
    window.location = "http://webanywhere.cs.washington.edu/beta/?starting_url=" + urlCurrent;
}
$.test_redirect();

从 javascript 代码中可以清楚地看到,我试图将打开页面test.html的用户重定向到另一个页面,该页面接受我所在的正确页面的 URL 作为查询字符串中的参数并执行一些操作它。

当重定向的网页加载多次时会出现问题。重定向页面实际上打开了带有注入脚本页面的相同 test.html,但重定向再次开始。

有人可以帮我找出问题所在吗?.

4

2 回答 2

1

有多种方法可以决定不对来自第三方的后续页面加载进行重定向:

  1. 在您重定向之前,设置一个具有相当短的过期时间(例如 1-2 分钟)的 cookie。如果 cookie 在加载时存在,请不要重定向,因为您不久前刚刚完成了重定向,因此此页面加载必须来自第三方。如果 cookie 不存在,则进行重定向。

  2. 让第三方网站使用某种查询参数第二次加载您的页面,您可以将其识别为第三方网站放置在那里,这样您就知道不要重定向。例如,如果您将“?noredirect=true”(正确编码)添加到您重定向到的 URL 的末尾,会发生什么情况。第三方网站会在您的 URL 上留下“?noredirect=true”,当它返回给您时,您可以检测到并避免重定向吗?

  3. 查看document.referrer,看看它是否是第三方页面。一些用户可能会将他们的浏览器配置为阻止推荐人,因此这不是 100% 可靠的。

  4. 让您的页面第一次打开(从它来自的任何链接)指定一个查询参数,该参数指定应允许重定向。这仅在您的页面仅链接到您控制的位置且不太可能被添加书签的情况下才可行。

于 2012-07-17T20:24:37.023 回答
1

检查推荐人:

function test_redirect() {
    if( document.referrer.indexOf('http://webanywhere.cs.washington.edu') < 0 ){
      var urlCurrent = window.location.url;
      window.location = "http://webanywhere.cs.washington.edu/beta/?starting_url=" + urlCurrent;
    }
}
$.test_redirect();
于 2012-07-17T20:28:51.823 回答