问题:
我需要从包含第二页网址http://www.firstURL.com/?http://www.secondURL.com
的查询字符串的网址开始。在第一个URL的目标页面上,解析查询字符串以提取第二个URL,并将浏览器重定向到第二个URL。这是在$(document).ready
上完成的,因此它是自动的。这一切都运行正常,但如果用户点击第二个URL上的后退按钮,当然会陷入漏洞。这是基本代码:
$(document).ready(function() {
var s = location.search;
if(s != '') {
var split = s.split('?');
var loc = split[1].replace('?', '');
location.href = '' + loc + '';
} else {
//do something else on the target page..
}
});
我已经尝试创建一个条件案例,如果引用者是第二个URL(上面代码中的loc
),则重定向不会执行,但似乎是在重新指示,后退按钮不会返回推荐人。
我必须做所有这个客户端 - 我无法访问服务器。
有没有办法防止后退按钮点击时重定向触发?感谢。
答案 0 :(得分:0)
点击第二页后,在浏览器中设置一个cookie,表示已访问过第二页。 在第一页中,在进行重定向之前,请始终检查cookie是否不存在。
关于设置cookie的说明:
<script type="text/javascript">
document.cookie="secondpagevisited=43yj0u3jt;path=/"; //execute this line in the head of second page.
</script>
在第一页中,检查cookie存在:
<script type="text/javascript">
if(document.cookie.indexOf("secondpagevisited=43yj0u3jt")==-1){
/*do redirection here*/
}
</script>
编辑:假设您只控制第一页而不是第二页,请尝试:
<script type="text/javascript">
if(document.cookie.indexOf("secondpagevisited=43yj0u3jt")==-1){
document.cookie="secondpagevisited=43yj0u3jt;path=/";
/*do redirection here*/
}
</script>
答案 1 :(得分:0)
我给了Ashish让我走上正确轨道的重点,但这是我的解决方案更进了一步:
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 + '';
location.href = '' + loc + '';
} else {
var url = location.href.replace('' + s + '', '');
document.cookie = 'redirected=; expires=Thu, 01 Jan 1970 00:00:00 GMT';
history.pushState(null, null, '' + url + '');
}
如果cookie在那里,则不会发生重定向,将删除cookie(如果用户返回到具有原始链接并再次单击它的站点),则通过删除来整理URL查询字符串。
感谢您的指导。