这是IE8中一个跨域访问中的问题。HTML:
var xdr = new XDomainRequest();
var para = "act=free&val=112345";
xdr.open("POST","http://127.0.0.3/test.php");
xdr.send(para);
xdr.onload = function(){alert( xdr.responseText )};
xdr.onerror = function(){alert("error!")};这样传递过去后test.php是接收不到act/val这两个变量的,比较郁闷。网上查了下,Ajax使用POST时HTTP头需要设置为:application/x-www-form-urlencoded,而这个XDR的HTTP却不能设置(我就热了,IE Team脑袋进水了吧)HTTP头。不要用XMLHttpRequest的解决方法,那个太麻烦了。PS:这个XDR目前还不完善的说。要用XDR的话,对方域中必须要设置头:Access-Control-Allow-Origin:* ,但IE Team又限制了不允许更改HTTP头,说是比较危险,那一边要求对方设置文件头才能跨域,一边还限制HTTP头为text/xml,这不是画蛇添足么?真是个操蛋。

解决方案 »

  1.   

    参考:
    http://school.itzcn.com/special-spid-28.html
    上面讲解的比较详细,希望对楼主有所帮助。
      

  2.   

    Access-Control-Allow-Origin:*是服务器端返回响应的时候设置的,设置了之后客户端才可以接收数据。http://msdn.microsoft.com/en-us/library/cc288168%28VS.85%29.aspx
    有例子,应该是可以的。如果数据不多,还可以使用GET方法
      

  3.   

    跨域 的功能目前IE支持的还不全面。Firefox 支持的很全面,可以参加
    http://blog.csdn.net/net_lover/archive/2010/01/11/5172509.aspx
    http://blog.csdn.net/net_lover/archive/2010/01/11/5172522.aspx
    http://blog.csdn.net/net_lover/archive/2010/01/11/5172532.aspx
      

  4.   

    暂时用Chrome解决了。Chrome不不错。FireFox也可以,就是IE8真是恶心。