【发布时间】:2013-11-19 04:21:53
【问题描述】:
当脚本试图访问来自不同来源的框架时,Chrome 会阻止它并抛出异常
“未捕获的安全错误:阻止具有源“提供程序域”的帧访问具有源“mydomain”的帧。协议、域和端口必须匹配”。
在谷歌浏览器中进行了一些更新后,我收到了这个错误。有什么建议吗?
【问题讨论】:
-
如果它是您尝试访问的 SSO 内容,则可能是模式对话框或弹出窗口。
当脚本试图访问来自不同来源的框架时,Chrome 会阻止它并抛出异常
“未捕获的安全错误:阻止具有源“提供程序域”的帧访问具有源“mydomain”的帧。协议、域和端口必须匹配”。
在谷歌浏览器中进行了一些更新后,我收到了这个错误。有什么建议吗?
【问题讨论】:
框架和/或窗口之间的直接 Javascript 调用仅在符合 same-origin policy 的情况下才被允许。如果您的窗口和 iframe 共享一个共同的父域,您可以将 document.domain 设置为“domain lower”)一个或两个,以便它们可以通信。否则,您需要查看 postMessage() API 之类的内容。
【讨论】:
opener 页面位于同一目录中或“上方”,则 SAF 和 FF 似乎只允许文件:页面进行通信。无论如何,Chrome 在浏览器安全行为方面通常处于领先地位,因此如果 FF 和 SAF 在某个时候效仿,请不要感到惊讶。
这是一个安全更新。如果攻击者可以修改 Web 服务器中的某些文件(例如 JS 文件),他可以使每个加载的页面都下载另一个脚本(例如键盘记录您的密码或窃取您的 SessionID 并将其发送到他自己的服务器)。
为避免它,浏览器检查Same-origin policy
您的问题是浏览器正在尝试使用您的脚本(通过 Ajax 请求)加载另一个域(或子域)上的内容。 为了避免它(如果它在您自己的网站上),您可以:
【讨论】:
paypal.checkout.setup 或 facebook.login 函数时浏览器不会抛出这个错误?这完全是跨域请求,从我的 url 到 PayPal url!为什么没有错误?
<script src="facebook.com/foo.js"> 或更常见的一段代码来创建此标签。