嵌入在iframe中的外部商店使用cookie - 如果用户阻止第三方cookie,是否可以?

时间:2014-08-27 16:56:05

标签: iframe cookies

假设您必须使用iframe将网上商店集成到我们自己的网站中。另一家商店使用cookies,如果其cookie被封锁则无法运行。

如果用户阻止第三方Cookie会怎样?

如果用户使用Internet Explorer,则设置P3P Headers可以解决问题。但是,其他主流浏览器不支持P3P。

因此,经过一些研究和实验,我意识到不可能让它在所有其他浏览器上运行。 (虽然我只能用Firefox和Chrome测试。)

据我了解,自2013年以来,Mozilla严格执行第三方Cookie设置:http://webpolicy.org/2013/02/22/the-new-firefox-cookie-policy/

许多关于iframe第三方Cookie的文章是在2013年之前撰写的。我不认为它们仍然有效。一些消息来源声称您至少可以访问现有的cookie。根据我的实验,即便如此也不是这样。

我的结论是否正确:

  • 是否真的无法再解决浏览器设置?
  • 换句话说,建议的解决方案是告诉用户允许第三方Cookie吗?

如果我错了,我会很高兴听到这个。 : - )

我必须澄清,如果解决方案涉及需要集成的网上商店的某些变化,那就没关系。所以你可以假设商店的经营者会帮助你(当然,除非它需要不切实际的时间和资源)。


旁注:我找到了一些可能的替代方案,但实施和操作起来都很昂贵。例如,您可以通过同一域上的代理服务器将所有流量重定向到外部商店(因此cookie再次成为第一方)。我读到的另一个解决方案是用本地存储替换cookie,但说起来容易做起来难。


如果您想重现这个问题,这里有一个最小的例子(使用www.mercateo.co.uk):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<title></title></head><body><h1></h1>

<p>Begin iframe</p>

<iframe width="100%" height="100%" frameborder="0" align="left" scrolling="auto" marginheight="0" marginwidth="0" id="iframe" src="http://www.mercateo.co.uk/basket/view?cookieTest=true" style="height: 586px;"></iframe>

<p>End iframe</p>
</body></html>

如果第三方Cookie被阻止,它会将您重定向到显示&#34;您的浏览器不接受Cookie&#34;的错误页面。在Chrome和Firefox上测试过。

2 个答案:

答案 0 :(得分:0)

不,没有适合每个浏览器的通用解决方案。有IE和Safari的解决方法,但Firefox和Chrome没有。

让我们分解一下:

<强> 1。 Internet Explorer

是的,可以使用P3P protocol(隐私首选项平台)设置第三方Cookie。

要实现它,嵌入在iframe中的商店可以设置&#34; P3P HTTP响应标头,例如:

P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"

CP代表&#34;紧凑政策&#34;。 &#34; CP&#34;的内容在P3P specification中描述。您还需要按照in this article

所述部署完整的P3P隐私政策

这是有争议的,因为浏览器无法验证信息是否正确。它必须信任发件人。引自Wikipedia

  

使用P3P时出现的一个关键问题是缺乏执行力。因此,对P3P用户的承诺可能无法实现。虽然通过使用P3P,公司/网站向网站用户承诺隐私和使用收集的数据,但如果公司决定将该信息用于其他功能,则没有真正的法律后果。

因此,没有其他主要浏览器实现P3P。

<强> 2。 Safari(包括iOS设备)

是的,可以访问和修改第三方Cookie。虽然Safari通常不允许您设置第三方Cookie,但它允许访问现有的第三方Cookie。

请注意,Safari会默认阻止第三方Cookie。在Firefox和Chrome中,用户必须主动更改浏览器的Cookie设置。

第3。 Firefox和Chrome

不,如果用户决定阻止第三方Cookie,则无法解决此问题。

这两个浏览器尊重用户的Cookie设置。最后,它总是在隐私和便利之间进行权衡。

答案 1 :(得分:0)

如果您可以在iframe应用程序和包装页面之间创建一种“桥梁”,那么您可以采取哪些措施来绕过此问题,并根据您的声明可以在商店中要求更改。所有主流浏览器都支持帧间通信,因此这里没有技术差距可以解决。

所以IFrame应用程序会“要求你”为它设置cookie,因为你是第一方的主要域,它将起作用,每次商店的iframe加载它都必须要求你提供cookies为了能够识别用户。这是可能的,在技术上并不困难,但需要应用程序基于AJAX而不是基于页面(这总是更好的IMO,因为这意味着你将视图与数据分开)。