Crossdomain AJAX将Internet Explorer迁移到HTTP

时间:2014-06-05 07:42:55

标签: ajax internet-explorer cross-domain xdomainrequest

我已经发现,为了能够在Internet Explorer中发送跨域数据,我应该使用XDomainRequest

通过这样做我偶然发现了下一个问题。我正在将数据从HTTP发送到HTTPS,这会产生错误SCRIPT5: Access is denied.。我尝试将header("Access-Control-Allow-Origin: *");添加到指定的PHP文件中但没有结果。

有没有解决这个问题的方法,我可以将数据从HTTP域发送到Internet Explorer 9+中的HTTPS域?

我正在使用的代码(这给出了script5错误):

if ('XDomainRequest' in window && window.XDomainRequest !== null) {
    var xdr = new XDomainRequest(); // Use Microsoft XDR
    xdr.open('get', url);
    xdr.onload = function () {
        var dom  = new ActiveXObject('Microsoft.XMLDOM'),
        JSON = $.parseJSON(xdr.responseText);

        dom.async = false;

        if (JSON == null || typeof (JSON) == 'undefined') {
            JSON = $.parseJSON(data.firstChild.textContent);
            console.log(JSON);
        }

        successCallback(JSON); // internal function
    };

    xdr.onerror = function() {
        _result = false;  
    };

    xdr.send();
}

我还尝试添加$.support.cors = true;但没有结果。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题: 我已使用JSONP修正了它:

$.ajax({
    url: url,
    data: thedata,
    dataType: 'jsonp',
    jsonp: 'callback',
    jsonpCallback: 'jsonpCallbackFunc',
    success: function (response) {

    }
});