Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨协议cookie iFrame_Javascript_Http_Cookies_Https_Xss - Fatal编程技术网

Javascript 跨协议cookie iFrame

Javascript 跨协议cookie iFrame,javascript,http,cookies,https,xss,Javascript,Http,Cookies,Https,Xss,我在http://localhost/mySite/Page1.aspx上有一个网页,其中包含一个带有srchttps://localhost/mySite/Page2.aspx的iframe 在iframe页面(Page2.aspx)中,我使用JavaScript设置cookie。我如何在父页面(Page1.aspx)上读取cookie???看起来Page1没有看到Page2设置的cookie 要设置/读取Cookie,我使用jQuery.Cookie插件: $.cookie('myKey',

我在http://localhost/mySite/Page1.aspx上有一个网页,其中包含一个带有srchttps://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:(

根据问题的评论:

该问题是由于同一来源政策(SOP)导致的,该政策禁止不同来源的内容相互干扰。不同来源不仅基于域的比较,还基于当前使用的协议。因此,
http://localhost
https://localhost

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

  • 完美地描述了常用的技术(iframe代理和URL轮询),并在其“物理定律:iframe可以做什么”一段中清楚地总结了SOP的规则
  • (链接自上述文章)将常用技术合并到一个优雅的解决方案中
  • 如果目标浏览器都兼容HTML5(即最新的标准浏览器,即不是大多数MSIE版本),该标准引入了一个新的帧间通信系统,带有
    window.postMessage()
    onMessage
    事件
还有免费的预构建解决方案(虽然我没有测试),比如或


干杯!

我认为这不完全正确。安全属性未设置为true的Cookie将在整个域中共享,而不考虑使用的协议


真正的问题是jquery忽略了这一方面,可以通过使用
$.cookie('u cookie','u value',{expires:7,path:'/',domain:'jquery.com',secure:true})将
secure=true
指定为JSON属性来改变这一点。

由于同源策略,“我不能让你这么做,Dave”。只需检查:不同的协议(HTTP和HTTPS)正式使您的Page1和Page2来自不同的来源。请参阅,还有。此外,如果您不需要与MSIE等令人尴尬的化石向后兼容,请享受谷歌乐趣,并寻找HTML5引入的新的面向消息的帧间通信系统(window.postMessage()和onMessage事件)。干杯!@stockoverwaw谢谢!!它帮了我很多忙:)你知道任何处理跨域iframes/frames实现的框架吗?我开始写我自己的,但如果它存在,为什么要重新发明轮子?我不知道任何框架……但是,快速搜索“跨域通信库”给出了一些结果(Ternarylabs的舷窗看起来很漂亮而且易于使用,我刚才也看到了EasyXDM,它似乎是面向性能的)@StockOverlaw事实上,根据你在第一次评论中提供给我的链接,我的任务已经完成,但我会查看这些库,也许它比我的库更灵活。顺便说一句,你能用链接发布答案吗,所以我会将其标记为“答案”。再次感谢:)