各位大侠: 最近遇到了 javascript 跨域调用问题 我在这种父子页面需要返回值的页面上使用 window.opener.document.getElementById().value的时候,页面会报错,告诉我拒绝访问。父子页面属于不同的站点。郁闷ing…… 在网络上搜了一下,江湖传言如下: Javascript出于安全性考虑,是不允许跨域调用其他页面的对象的。因此也就导致了在一些ajax应用中,使用跨域的web service成为问题。 在多数情况下,只有同一个域内的页面才能交互作用。比如,一个位于 www.microsoft.com/ 域中的页面可以自由地通过脚本影响 www.microsoft.com/ 域中的其他页面,但却不能作用于其他网域中的页面。 DHTML对象模型用 document.domain 属性来强制约束:只有拥有相同 domain 属性的页面能够自由地相互作用。(包括URL协议也必须相同,比如HTTP页面不可以与HTTPS的内容交互作用。) 当网页作者指定 document.domain 属性为域名的后半部分时,读写许可将可以扩展至二级域名(second-level domain )。例如:[microsoft.com] 上的一个页面可以把 document.domain 属性由初始的“www.microsoft.com”改为“microsoft.com”,就可以读写 home.microsoft.com 上的页面,或者以 microsoft.com 结尾的所有其他域中的页面,只要那些页面的 document.domain 属性值也设置为 microsoft.com 。因为只有名字以 microsoft.com 结尾的站点上的文档才能设置其 document.domain 属性为 microsoft.com ,所以确保了只有同一个服务提供者的页面才能互相提供权限并交互操作。document.domain 属性值不能比二级域名更短(比如“com”),因为这样会使权限超越于单一的服务提供者。比如:一个国际域名 www.microsoft.co.jp/ ,最大的操作权限是二级域名"microsoft.co.jp"(而不是"co.jp")。 这里整理了一些方法,来解决这个问题: 1.设置document.domain。 2.在服务器端设置代理 3.使用apache服务器的mod_rewrite http://doc.99net.net/doc/service/1076303865/1076476868.html 4.这边还有一个方法 http://johnvey.com/features/deliciousdirector/web-service-broker.html 哪位大侠有比较牛的解决方案,快点跟贴!!
|