【发布时间】: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 上一切正常。现在的两个问题是:
- 在 Chrome(可能还有其他)上,cookie 删除要么不起作用,要么仅在用户导航到另一个站点后才起作用。删除代码只是简单的 javascript,将相同的 cookie 设置为过去的到期日期。这在实践中可能是一个相对较小的问题,但找到解决方案会很好。
- 在 iOS 上的 Safari 上,站点 A 不在浏览器历史记录中。通过从历史堆栈中省略重定向页面,似乎iOS(通常可能还有Safari)试图避免返回到重定向到第二个站点的页面的循环问题)。结果,按下siteB 上的后退按钮会转到重定向页面之前的页面。这是一个大问题。
似乎有 3 种可能性 - 我想做的事情是不可能的,因为它存在安全风险;没有跨浏览器/平台的解决方案;或者我用完全错误的方法接近了目标。
固定点是:
- URL 的形式(带有包含第二个 URL 的查询字符串);
- 无法访问服务器(仅限于 javascript/jquery)。
- 无法控制站点 B(仅站点 A)。
如果有任何建议和/或建议,我将不胜感激。
谢谢
【问题讨论】:
标签: javascript ios cookies query-string url-redirection