如何解决同一起源问题

时间:2010-05-26 11:56:52

标签: javascript

如果从 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.comhttp://b.abc.com获取属性Location.href的权限被拒绝。

任何人都知道我如何解决这个问题或者考虑其他解决方案?

1 个答案:

答案 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/

了解有关示例的详情