3

我已经构建了一个 cookie 同意模块,该模块在同一个集群上的许多站点上使用,所有站点都使用相同的服务器架构。对于这些网站的访问者,可以在跟踪用户偏好(和访问的网站)的中央域上管理他们的 cookie 设置(例如,没有广告 cookie,但允许分析厨师)。

当他们更改设置时,访问者访问过的所有使用我的模块(保存在 cookie 中)的网站都会通过在隐藏 iframe 中加载参数来联系。我对图像进行了同样的尝试。

在这些站点上,有一个重写规则来检测该参数,然后收回 cookie(将日期设置为过去)并重定向到模块站点上的页面(或模块站点上的图像)。

该方案适用于除 IE 之外的所有浏览器,因为它需要 P3P(可能它不适用于图像的原因是相似的)。

我还尝试通过图像标记在源域(即使用模块的域)上加载不存在的图像,显​​然会导致 404。这适用于所有浏览器,但 Safari 除外,它没有设置404 上的 cookie(至少,这是我的结论)。

我的问题是,考虑到我所能改变的只是重写规则,怎么可能收回连接域上的 cookie 同意 cookie?

我希望我已经很好地解释了这个问题,以便你们给出答案,并且解决方案是可能的......

4

1 回答 1

0

我仍然无法解决这个问题,但是当反过来看时,有一个解决方案。使用 JSONP(例如,请参阅:Basic example of using .ajax() with JSONP?),客户端域可以从主服务器加载信息并将其与本地信息进行比较。

基于此,客户端站点可以收回 cookie(甚至替换它)并强制重新加载,这将触发重写规则......

这个解决方案的一个缺点是它会在每次页面浏览时访问服务器,在我的例子中,这是一个真正的问题。只有每隔 x 分钟左右测试一次(通过设置临时 cookie)才能提供解决方案。

另一个更简单的解决方案是每隔 x 小时使客户端站点上的所有 cookie 过期。这也将强制重新访问主域。

于 2014-10-23T09:58:35.507 回答