在网上查到是使用document.domain="domain.com"来解决,但实际上解决不了
情况是这样的:
a.domain.com上的test.html,通过ajax调用b.domain.com上的remote.aspx页面,remote.aspx返回一段json或者html
在test.html中使用document.domain="domain.com",但问题依然不能解决。

解决方案 »

  1.   

    考虑过使用jsonp,但jsonp的方式中能是get,有大段的文本需要使用post方式提交
      

  2.   

    可以用变通的做法,在a.domain.com调用a.asp a.asp 去读取b.domain.com里的remote.aspx结果
      

  3.   

    这样不合适,因为有数据要post,如果加个代理的话,会比较复杂
      

  4.   

    设置domain的方法是用在iframe的处理中,ajax请求还是不行的,建议使用xReuest的方式:参见http://www.easyui.org.cn/easyui.jsajax.xRequest
      

  5.   

    谢谢楼上的,因为已经选择jquery框架,换框架肯定不现实了
    iframe解决方案稳定么?
      

  6.   

    我看了xRequest的代码,好像也是使用script的方式吧,这种方式只能提交get数据,不能使用post
      

  7.   

    我之前做过,
    解决的办法是:
        主域名和子域名同样指向ajax请求的地址。然后请求的地址动态获取host。    或者域名重写var url = 'http://' + document.location.host + '/servers/getjosn.ashx?asdasda=asdasd';
      

  8.   

    或者通过子站点建立中间层进行获取
    ajax->ashx WebClient 获取 - >返回json数据
      

  9.   

    虽然出于安全角度考虑javascript不适用于不同域之间的访问,但是因为ajax的存在还是有太多的应用需要js屡犯门规。像是二级域名比较多或者widgets、analysis之类的应用跨域访问还是有很大的存在价值的。通常3种情形面临着要跨域获得数据:local:abc.ciroyong.com -request-> remote:xyz.ciroyong.com(可部署) 
    local:www.domainabc.com -request-> remote:www.domainxyz.com(可部署) 
    local:abc.ciroyong.com -request-> remote:xyz.ciroyong.com(不可部署)或 remote:www.domainxyz.com(不可部署) 方法一:设定domain属性
    只适合情形1。Document对象的domain属性一定程度上缓解了多个二级域名时带来的不便,只要local和remote的domain属性都设为同一个域(ciroyong.com)就可以互相访问了。不过只是一定程度上的,只能接受两个域共有的部分(如abc.ciroyong.com不能设成xyz.ciroyong.com反过来也不可,只能为ciroyong.com),还要保持至少有一个“点号”。方法二:通过iframe与hash来传递
    1和2都适用。可以将要请求的remote页面包含在local页面的iframe中,由于iframe与父框架可以互相设定hash 值,这样就可以在2个页面中都设定监听方法(setInterval??)来捕获hash值的变化,不过remote端捕获的是请求命令而local端捕获的是请求结果。方法三:js脚本植入
    1和2都适用,在local端的页面中插入一个在remote端部署的动态脚本生成程序,然后通过将请求命令编码成url作为包含脚本的src,响应端的程序处理url查询命令返回特定的javascript代码(包含操作或者数据),代码在插入时被浏览器解析并执行。这也是baidu在用的方法。方法四:没有办法的办法也是最正当的方法proxy
    适合全部三种情形也是解决情形3的唯一办法。就是用可以跨域的服务器语言编写一个代理proxy,放在local端。请求时ajax请求本地的proxy来读取远端的数据再返回给请求端。不破坏同源策略而且实现起来容易,我比较爱用。唯一局限是要受服务器性能限制。方法2就是 iframe 可以解决一定的问题,但是不可取。