防止不必要的重定向从浏览器到应用商店(Preventing unwanted redirects f

2019-10-17 04:18发布

我一直认为广告和应用商店之间坐在重定向页面上。 该广告存在为引导到重定向页面静态URL。 重定向页面发送Ajax请求给第三方,设置一个cookie,然后重定向到AppStore的。 一切都很好并不鲜见。

所以它仍然在Safari浏览器选项卡中的重定向页面无法关闭本身。 我遇到的问题是,当用户如果页面已经从高速缓存中清除返回到Safari浏览器,Safari会重新加载它触发重定向。 我不希望用户得到扔进AppStore的意外。

一个解决办法是检查一个cookie的存在,如果它不存在重定向,但保留该用户点击的情况下,边缘上的另一个横幅广告,并没有得到相应的重定向。 我试图附加一个锚,防止用户发起刷新的URL,但Safari浏览器的自动刷新机制不尊重编程方式添加哈希值。

如果我可以用一个动态源生成引导用户到页面的URL,我可以生成一个时间戳,但现在的源URL是静态的。 有没有人有这个使用客户端代码的解决方案? 或者,这是真的只可解使用服务器端解决方案?

Answer 1:

最后我选择做一个两个阶段的重定向。 用户点击旗帜和被定向到:

http://myserver.example.com?someKey=someValue

我有一个做了这样的功能:

// Do I have a visited param?
if ($.url(window.location.href).param('visited') === '1') {
    // Do I have a visited cookie?
    if (helper.retrieveCookie('VISITED') == undefined) {
        console.log('Setting visited cookie');
        helper.storeCookie('VISITED', '1');
        return 1; // Redirect to AppStore.
    }
    // Have param and cookie
    console.log('VISITED cookie set');
    console.log('Refreshed');
    return 2; // Don't redirect.
} else {
    // No param
    helper.removeCookie('VISITED');
    return 0; // Redirect to self with &visited=1
}

所以基本上,我们将通过代码两次有意义和N次之后,由于刷新。 在我们做我们的AJAX请求第一遍,然后重定向到我们自己与添加PARAM。 在第二遍期间,我们设置cookie并且重定向到AppStore的。 页面的任何后续负荷将同时拥有一个cookie,并设置了一个param,不会重定向。 新的横幅点击不会有帕拉姆所以他们会正常执行。

这不是最漂亮的解决方案,因为我们需要重新加载我们的重定向页面,但由于它的内容应该被缓存,命中应该是最小的。



Answer 2:

如何在着陆页上添加一个javascript?

if (history.length < 2) 
  history.back();
else
  location.href = '/thankyoufordownloading.htm';

我没有测试它自己,但它可以工作。



文章来源: Preventing unwanted redirects from browser to app store