跨协议的cookie的iFrame(Cross protocol cookie iFrame)

2019-09-21 23:14发布

我对HTTP网页://localhost/mySite/Page1.aspx包含与SRC HTTPS的iframe://localhost/mySite/Page2.aspx。

里面的iframe页面(Page2.aspx),我设置cookie的使用JavaScript。 我怎么能读父页面(Page1.aspx的)上的cookie ??? 它看起来像第1页没有看到那第2页设置cookie。

要设置/读取cookies,我用jQuery.Cookie插件:

$.cookie('myKey', JSON.stringify(data), { expires: 1, path: '/', domain: 'localhost' });

顺便说一句,如果有人可以给我一个想法,如何在这样的方案在传输客户数据,我会很高兴知道它(服务器池不是我一个解决方案)。 我发现它与sessionStorage的/本地存储,但它只能在IE :(

Answer 1:

基于这个问题的评论:

这个问题是由于同源策略(SOP),即禁止从相互干扰的不同来源的内容。 不同的来源不仅是基于域的比较,它也是基于所使用的协议,因为它是显然这维基百科页面上显示 。 因此, http://localhost是一个不同的产地,以https://localhost

为了使这两个来源能够沟通:

  • 此链接恰如其分地描述了常用技术(iframe的代理和URL查询),并理解地总结了SOP的规则,在其段落“物理定律:你可以用的IFrame做什么”
  • 此其他证据充分的文章 (从上面的文章的链接)合并通常技术成完美的解决方案
  • 在情况下,有针对性的浏览器都兼容HTML5的(即上最新和对标准的浏览器,即不是最MSIE版本),该标准引入了一个新的框架间通信系统window.postMessage()onMessage事件

也有免费的预构建的解决方案(我没有测试虽然),如Ternarylabs'舷窗或EasyXDM 。

干杯!



Answer 2:

我不认为这是完全正确的。 的量,安全属性没有被设置为真时,饼干,将跨越不管使用的协议的域共享。

为你真正的问题是jquery的忽略该方面,其可以通过指定被改变secure=true使用作为JSON属性$.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); 在此问题。



文章来源: Cross protocol cookie iFrame