我正在使用 iframe 将我公司人力资源部门网站的访问权限添加到我们的部门网站。一切正常,除非用户尚未登录,否则 javascript 密码应用程序不会运行。我读到这是由于同源政策,但未能找到成功的处理方法。是否有一些代码片段我可以添加到 iframe 以防止它阻止其他网站的 javascript?
3 回答
两个页面必须共享相同document.domain
的内容才能相互编写脚本。
https://developer.mozilla.org/en/document.domain
https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript
如果您的父页面在域“myArea.myCompany.net”下,并且 iframe 中的 HR 页面在“theirArea.myCompany.net”下,您可以将两者都设置document.domain
为“myCompany.net”,然后他们就可以脚本相互。
同源策略意味着不能从另一个域访问一个帧。无论是 iframe,还是您上方的框架或窗口中的其他任何地方。
目的是保护用户。任何网站都可以添加加载 www.facebook.com 的 iframe,如果您已登录,只需阅读 HTML 即可提取您的真实姓名和朋友等。相同的原产地政策可以防止这种情况发生。
没有办法绕过它(如果有,那就是一个错误)。唯一的解决方案是通过将两个页面托管在同一个域上来避免该问题。
你必须使用和 IFRAME 吗?为什么不能简单地从部门网站链接到人力资源网站或在弹出窗口中显示它。
没有代码片段会转向相同的来源策略,但也许 CORS (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) 可以帮助您。
干杯