Cookies 网站可以做些什么来合并第三方cookie吗

Cookies 网站可以做些什么来合并第三方cookie吗,cookies,Cookies,我在一家电子商务网站工作。我们所做的部分工作是为一些客户提供定制产品。最近,一些非技术性的管理层承诺,我们可以将我们的退房流程整合到这样一个客户的网站中。我们知道如何做到这一点的唯一方法是使用iframe(我知道,我也不喜欢它)。问题是,该网站的大多数客户无法签出,因为我们使用cookies来确定要显示哪些自定义项目。浏览器将我们的cookie识别为第三方,几乎每个人都应该关闭第三方cookie。如果答案是肯定的,我会感到震惊,但是有什么解决办法吗?ie托管iframe的站点是否可以提供必要的c

我在一家电子商务网站工作。我们所做的部分工作是为一些客户提供定制产品。最近,一些非技术性的管理层承诺,我们可以将我们的退房流程整合到这样一个客户的网站中。我们知道如何做到这一点的唯一方法是使用iframe(我知道,我也不喜欢它)。问题是,该网站的大多数客户无法签出,因为我们使用cookies来确定要显示哪些自定义项目。浏览器将我们的cookie识别为第三方,几乎每个人都应该关闭第三方cookie。如果答案是肯定的,我会感到震惊,但是有什么解决办法吗?ie托管iframe的站点是否可以提供必要的cookie

如果答案是肯定的,我会感到震惊,但是有什么解决办法吗?ie托管iframe的站点是否可以提供必要的cookie

您的iframed页面本身(在这种情况下是第三方)可能会发送P3P Cookie策略头–一些浏览器默认接受第三方Cookie,而其他浏览器(主要是Safari)如果不是用户自己操作默认设置,则根本不会被说服这样做


您还可以做的是,不仅通过cookie传递会话id,还可以将其作为GET或POST参数传递–例如,在PHP下,通过配置会话选项可以非常轻松地完成这一操作。你应该考虑这是否值得稍微增加会话窃取的风险。

尝试一个隐形的、填隙的页面。 基本上,托管站点会向您域内的站点发出重定向,然后该站点可以自由设置cookie(因为此时实际上是第一方)。然后,您的站点立即重定向回托管站点。此时,您新创建的Cookie将对托管站点不可见,但对iFramed页面可见


不幸的是,托管站点将不得不在每次更新cookie时这样做,但是双重重定向可能发生得太快,他们几乎不会注意到。希望您的系统只需要设置一次Cookie。

中间页面解决方案应该可以工作,但这可能会给您的托管站点带来很多麻烦,因此这里有另一个解决方案,可以让您无需Cookie即可工作

编写一个HttpModule,它响应BeginRequest事件,读取查询字符串,并将相应的cookie头插入Context.HttpRequest对象(注意:您不能使用AddCookie,您必须使用AddHeader,因为模块直接添加的cookie在进入应用程序之前会被处理掉)。通过这种方式,托管站点只需发出一个请求(在iFrame中),该请求包含querystring中的必要值,模块就会将其转换为cookie(只存在于内存中,而不存在于线路上),应用程序就会被欺骗,以为存在cookie。无需更改代码,只需在web.config中添加模块


只有在集成管道模式下使用IIS 7.0+时,此选项才有效。如果您使用的是早期版本的IIS,或者必须在经典模式下运行,则需要使用ISAPI筛选器。

不要使用cookie,而是将每个url请求中的信息作为名称/值对传递

在每个url中添加名称/值有点痛苦…我知道…哦,好吧…它会起作用的。

Ryan,John 对于带有SameSite标志的ChromeV80更新,需要设置SameSite=none;为托管iframe的站点提供安全保护,并以某种方式提供必要的samesite=none;安全饼干。我们已经安装了Apache2.2和Tomcat6,因此希望您能提供一个解决方案,并就如何使其工作提供建议。当前启用标志时,iFrame未成功打孔。
谢谢你的建议,但是safari实际上是我们的#1浏览器,所以cookie策略标题已被删除。而且,使用cookies的系统是如此根深蒂固,合并get或post意味着关闭和大修我们的大部分代码,这是我做不到的。我正因为没有想到这一点而把头撞到桌子上。非常感谢你。