IE中的$ .ajax POST调用问题用于跨域

时间:2013-05-23 09:58:09

标签: jquery cross-domain

全部, 这可能是经常重复的问题..但我已经在这一天超过一天......到目前为止它令人失望和令人沮丧...... :(

function (url, requestData) {
var jqryXHR = $.ajax({
    type: 'POST',
    url: anotherDomainurl,
    //contentType: 'application/json; charset=UTF-8',
    data: {
        requestParams: requestData
    }
});

}

这在FF和Chrome中运行良好但在IE上没有。在IE中,调用本身没有被触发。我应该怎么做才能使它工作......并且要求是用POST进行调用。

我的服务器端代码是java,我正在设置

标题('Access-Control-Allow-Origin','*。anotherDomain.com');

此致

2 个答案:

答案 0 :(得分:0)

使用jsonp。它提供了一种从不同域中的服务器请求数据的方法。

http://remysharp.com/2007/10/08/what-is-jsonp/

答案 1 :(得分:0)

最终能够解决问题......

对于IE,我们必须使用

跨域调用的跨域请求(XDR)...而不是XMLHttpRequest

参考:http://msdn.microsoft.com/en-us/library/dd573303%28v=vs.85%29.aspx

使用XDR时有一些限制,可以查看@

http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

if (window.XDomainRequest) {    
            var xdr = new XDomainRequest();
            xdr.open("POST", url);
            xdr.onload = function () {};
            xdr.onerror = function() {};
            xdr.onprogress = function() {};
            xdr.send("requestData="+jsonData);
    } else{
         jQuery.support.cors = true;
            var jqXHR = $.ajax({
                type : 'POST',
                url : url,
                crossDomain: true,
                data : {
                    requestData : jsonData
                }
        });         
    }

同样在服务器端,响应应添加标头

访问控制允许来源, 访问控制允许的方法, 接入控制允许接头