1

我一直在研究位于广告和应用商店之间的重定向页面。广告作为指向重定向页面的静态 URL 存在。重定向页面向第三方发送 ajax 请求,设置 cookie,然后重定向到 AppStore。一切都很好,并不少见。

重定向页面无法自行关闭,因此它在 Safari 中保留为选项卡。我遇到的问题是,如果页面已从缓存中清除,当用户返回 Safari 时,Safari 将重新加载它以触发重定向。我不希望用户意外地进入 AppStore。

一种解决方案是检查 cookie 是否存在,如果存在则不重定向,但这会留下用户点击另一个横幅广告而没有获得适当重定向的极端情况。我尝试在 URL 上附加一个锚点,以防止用户启动刷新,但 Safari 的自动刷新机制不尊重以编程方式添加的哈希。

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

4

2 回答 2

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 请求,然后使用添加的参数重定向到我们自己。在第二遍中,我们设置了一个 cookie 并重定向到 AppStore。页面的任何后续加载都将具有 cookie 和参数,并且不会重定向。新的横幅点击将没有参数,因此它们将正常执行。

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

于 2012-08-21T23:47:44.433 回答
0

在登录页面上添加 javascript 怎么样?

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

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

于 2012-08-21T16:58:03.237 回答