这是对原始问题here的跟进。建议的答案在Firefox中有效,但至少Chrome和Safari(在iOS上)存在问题。
最初的问题是:在一个不相关的网站(比如Facebook)上,用户可以创建href格式为http // www.siteA.com /?http://www.siteB.com的链接。目的是siteA解析查询字符串并将浏览器重定向到siteB。一切正常。
然后,当用户重新定向到siteB时,单击其浏览器上的后退按钮,目标是他们应该返回到siteA而不是再次重定向。
我之前提出的问题的答案提出,在从siteA重新指示时,siteA上的代码会检查cookie - 如果不存在,则会设置并重新定向。如果它在那里,那么没有重定向。为了允许用户返回到原始引用页面并再次单击相同的链接(并重定向到siteB),还建议如果在siteA上找到cookie,并且没有重定向, cookie被删除。
在Firefox上一切正常。现在的两个问题是:
似乎有3种可能性 - 我想做的事情是不可能的,因为这是一种安全风险;没有跨浏览器/平台解决方案;或者我完全用错误的方法接近了目标。
固定点是:
我对任何建议和/或建议表示感谢。
由于
答案 0 :(得分:0)
这似乎是问题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的方法。
我对阅读有关这些问题的任何其他意见感兴趣并感激不尽。感谢。