使用mod重写和apache删除另一个域上的cookie



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

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

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

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

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

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

我希望我已经很好地解释了这个问题,让你们给出答案,并且有可能找到解决方案。。。

我仍然无法解决这个问题,但从另一个角度来看,有一个解决方案。使用JSONP(例如,请参阅:将.ajax()与JSONP一起使用的基本示例?),客户端域可以从主服务器加载信息,并将其与本地信息进行比较。

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

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

另一个更简单的解决方案是每x小时使客户端网站上的所有cookie过期一次。这也将迫使重新审视主要领域。

最新更新