如果从 a.abc.com到b.abc.com 的mainFrame中的URL,以下JS将失败。
top.frames [“mainFrame”]。location.href =“/ Users / xuenn.aspx?BACKUrl =”+ top.frames [“mainFrame”]。location.href.split(“?”)[0] ;
这是错误消息: http://a.abc.com从http://b.abc.com获取属性Location.href的权限被拒绝。
任何人都知道我如何解决这个问题或者考虑其他解决方案?
答案 0 :(得分:0)
同源策略禁止从其他域访问[窗口],但location
属性是可写的。
在这种情况下,您需要使用document.domain = foo
,或以其他方式将预期的网址传递给a.abc.com
,例如使用#http://b.abc.com/
或?b=http://b.abc.com/
,以便你不需要阅读该物业。
在第一种情况下,请注意,这可能会导致使用iframe以异步方式向服务器发布/上传数据的脚本出现问题,因为在设置document.domain
后,这些脚本将无法再访问iframe内容。
如果您的环境是跨域的,那么您也应该查看easyXDM。这是一个易于使用的库,可让您通过RPC调用跨域边界,事件进行通信。您可以尝试其中一个示例here,这样可以实现跨域XHR 在http://easyxdm.net/wp/2010/03/17/cross-domain-ajax/
了解有关示例的详情