美文网首页
记录:AJAX在IE8下的跨域问题

记录:AJAX在IE8下的跨域问题

作者: EwanQiu | 来源:发表于2016-11-24 18:00 被阅读0次

    现在解决跨域问题可以用CORS标准。
    CORS允许浏览器向跨源服务器,发出XMLHttpRequest请求。
    操作很简单,只要在请求的地址服务的头信息中添加header("Access-Control-Allow-Origin:http://xxx.xxx.com") 即可。
    但是在IE8竟然是不可行的。
    IE8中需使用XDomainRequest (XDR)来跨域访问。
    兼容代码如下:
    `

        function crossDomainAjax (url,successCallback) {
            url = encodeURI(url);   
            // IE8 & 9 only Cross domain JSON GET request
            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);
                    }
    
                    successCallback(JSON); // internal function
                };
    
                xdr.onerror = function() {
                    _result = false;  
                };
    
                xdr.send();
            } 
    
            // IE7 and lower can't do cross domain
            else if (navigator.userAgent.indexOf('MSIE') != -1 &&
                    parseInt(navigator.userAgent.match(/MSIE ([\d.]+)/)[1], 10) < 8) {
                        return false;
                    }    
    
            // Do normal jQuery AJAX for everything else          
            else {
                $.ajax({
                    url: url,
                    cache: false,
                    dataType: 'json',
                    type: 'GET',
                    async: false, // must be set to false
                    success: function (data, success) {
                        successCallback(data);
                    }
                });
            }
        }
    

    `

    参考
    http://stackoverflow.com/questions/3362474/jquery-ajax-fails-in-ie-on-cross-domain-calls#11267937
    https://msdn.microsoft.com/library/cc288060(v=vs.85).aspx

    相关文章

      网友评论

          本文标题:记录:AJAX在IE8下的跨域问题

          本文链接:https://www.haomeiwen.com/subject/nszbpttx.html