0

我在http ://localhost/mySite/Page1.aspx上有一个网页,其中包含一个带有 src https ://localhost/mySite/Page2.aspx 的 iframe。

在 iframe 页面 (Page2.aspx) 中,我使用 JavaScript 设置了 cookie。我如何在父页面(Page1.aspx)上读取该 cookie ???看起来 Page1 没有看到 Page2 设置的 cookie。

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

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

顺便说一句,如果有人可以告诉我如何在这种方案中在客户端传输数据,我会很高兴知道(服务器池不是我的解决方案)。我发现它适用于 sessionStorage / localStorage,但它只适用于 IE :(

4

2 回答 2

1

根据问题的评论:

这个问题是由于同源策略(SOP),它禁止不同来源的内容相互干扰。不同的来源不仅基于域的比较,还基于使用的协议,因为它清楚地显示在此 Wikipedia 页面上。因此,http://localhost与 是不同的起源https://localhost

为了使这两个源能够通信:

  • 此链接完美地描述了常用技术(iframe 代理和 URL 轮询),并在其段落“物理定律:您可以使用 IFrame 做什么”中清晰地总结了 SOP 的规则
  • 这篇其他有据可查的文章(从上面的文章链接)将常用技术合并到一个优雅的解决方案中
  • 如果目标浏览器都是 HTML5 兼容的(即最新且符合标准的浏览器,即不是大多数 MSIE 版本),该标准引入了一个新的帧间通信系统window.postMessage()onMessage事件

还有免费的预建解决方案(虽然我没有测试过),比如Ternarylabs 的 PortholeEasyXDM

干杯!

于 2012-09-05T09:43:46.533 回答
0

我不认为这是完全正确的。安全属性未设置为 true 的 cookie 将在域中共享,而与使用的协议无关。

对您来说真正的问题是忽略此方面的 jquery,可以通过在问题中secure=true使用 as 指定为 JSON 属性来更改它。$.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });

于 2013-08-21T04:48:56.167 回答