当前位置:  开发笔记 > 编程语言 > 正文

如何在Safari中的iframe中设置外部域的cookie?

如何解决《如何在Safari中的iframe中设置外部域的cookie?》经验,为你挑选了2个好方法。

来自Apple 开发者常见问题解答

Safari附带了保守的cookie策略,该策略将cookie写入仅限于用户选择("导航到")的页面.

默认情况下,Safari仅允许您直接导航到的网站的Cookie.(即,如果您点击具有该域名的URL的链接).

这意味着,如果您使用带有来自其他网站的网页的iFrame从您自己的网站加载网页,则其他网站无法设置Cookie.(例如,售票处).一旦您直接访问了其他域,另一个站点就能够访问和更改自己的cookie.

如果无法访问其他网站上的代码,我怎样才能使用户体验尽可能不引人注目?

是否有(javascript?)方式检查其他网站的cookie是否已设置,并相应地,如果需要,首先显示与其他网站的直接链接?

更新:

HTML5功能'window.postmessage'似乎是一个不错的解决方案.
有一些jQuery库可能有所帮助,并且与最新的浏览器兼容.
本质上,iFrame文档通过窗口元素与Json一起发送消息.

非常好的Postmessage插件,由daepark,我工作.
另一个jQuery postMessage,由Ben Alman发现,但我没有测试过.



1> 小智..:

safari和所有现代浏览器支持的localStorage甚至允许在加载到iframe中的页面上进行读/写操作.如果您不介意放弃对ie6和ie7的支持,请尝试在框架网站中使用localStorage而不是cookie.我知道你的问题具体说你没有访问框架网站上的代码,但对于那些做的人来说,localStorage肯定解决了"没有Safari中的cookie问题"的问题.



2> M.W. Felker..:

这是一个称为同源策略的问题.从本质上讲,它是一种防范创建安全漏洞的安全措施.

当您的iframe指向您自己域中的网页时,JavaScript可以同时访问您所在的网页和Iframe中的网页.这是孩子和孩子与父母关系的可接受的父母.

 (parent doc)        (iframe doc)
    HTML --> IFRAME <-- HTML 
      ^--------|---------^

但是,一旦你有一个指向外部页面的文件,SOP就会起作用,并且会在父页面和iframe页面之间传递任何信息.

 (parent doc)        (iframe doc)
    HTML --> IFRAME <-- HTML 
               X

看看这篇关于iframe通信的帖子,它很有意义! Stackoverflow帖子

这些链接真的很有帮助!

1) 浏览器中的安全跨域通信
2) wiki SOP或同源策略

祝好运!

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有