【问题标题】:Back Button after re-direction重定向后的返回按钮
【发布时间】:2014-03-06 21:33:03
【问题描述】:

这是对我最初的问题here 的跟进。建议的答案在 Firefox 中有效,但至少 Chrome 和 Safari(在 iOS 上)存在问题。

最初的问题是:在不相关的网站(比如 Facebook)上,用户可以创建链接,其中 href 的格式为 http//www.siteA.com/?http://www.siteB.com。目的是 siteA 解析查询字符串并将浏览器重定向到 siteB。一切正常。

然后,当用户被重定向到站点 B,点击浏览器上的后退按钮时,目标是他们应该返回到站点 A,而不是再次被重定向。

我上一个问题的答案提出,在从 siteA 重定向时,siteA 上的代码会检查 cookie - 如果它不存在,它会设置它并重定向。如果它在那里,则没有重定向。为了让用户回到原来的引用页面,再次点击相同的链接(并被重定向到siteB),还提出如果在siteA上找到cookie,以及不重定向, cookie 被删除。

在 Firefox 上一切正常。现在的两个问题是:

  1. 在 Chrome(可能还有其他)上,cookie 删除要么不起作用,要么仅在用户导航到另一个站点后才起作用。删除代码只是简单的 javascript,将相同的 cookie 设置为过去的到期日期。这在实践中可能是一个相对较小的问题,但找到解决方案会很好。
  2. 在 iOS 上的 Safari 上,站点 A 不在浏览器历史记录中。通过从历史堆栈中省略重定向页面,似乎iOS(通常可能还有Safari)试图避免返回到重定向到第二个站点的页面的循环问题)。结果,按下siteB 上的后退按钮会转到重定向页面之前的页面。这是一个大问题。

似乎有 3 种可能性 - 我想做的事情是不可能的,因为它存在安全风险;没有跨浏览器/平台的解决方案;或者我用完全错误的方法接近了目标。

固定点是:

  1. URL 的形式(带有包含第二个 URL 的查询字符串);
  2. 无法访问服务器(仅限于 javascript/jquery)。
  3. 无法控制站点 B(仅站点 A)。

如果有任何建议和/或建议,我将不胜感激。

谢谢

【问题讨论】:

    标签: javascript ios cookies query-string url-redirection


    【解决方案1】:

    这似乎是问题 2 的解决方案:

    $(document).ready(function() {
      var s = location.search;
       if(s != '') {
        var split = s.split('?');
         var loc = split[1].replace('?', '');
          if (document.cookie.indexOf('redirected=' + loc + '') == -1) {
               document.cookie = 'redirected=' + loc + '';
               var link = document.createElement('a');
               link.href = loc;
               document.body.appendChild(link);
               link.click();
              } else {
               document.cookie = 'redirected=' + loc + '; expires=Thu, 01 Jan 1970 00:00:00 GMT';
               var url = location.href.replace('' + s + '', '');
               location.href = '' + url + '';
              }
              } else
              {
              //do something on the re-direction page
              }
              });
    

    这有点老派,但不是重定向,而是在中间页面上创建一个链接并以编程方式单击它。这就像重定向一样,但将重定向页面留在历史堆栈中,即使在 iOS 上也是如此。

    感谢this answer 的提示。

    仍在寻找一种更有效地删除 cookie 的方法。

    我会很感兴趣并感谢阅读有关这些问题的任何其他 cmets。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2015-06-26
      • 2011-10-24
      相关资源
      最近更新 更多