美文网首页
记录: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下的跨域问题

    现在解决跨域问题可以用CORS标准。CORS允许浏览器向跨源服务器,发出XMLHttpRequest请求。操作很简...

  • SpringBoot 解决 application/octet-

    前端为了兼容IE8和跨域做了很多操作(我也不懂),之后发现了一个问题,IE8下所有的ajax请求都是 applic...

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • window.postMessage解决前端ajax跨域问题

    postMessage畅快解决跨域问题 本文主要是记录使用window.postMessage解决ajax跨域问题...

  • IE8和IE9的跨域AJAX

    IE8和IE9的跨域AJAX 在jQuery 1.5+中使用$ .ajax功能时,可以使用IE8和IE9的对象实现...

  • 前端跨域

    什么是ajax跨域 ajax跨域的原理 ajax出现请求跨域错误问题,主要原因就是因为浏览器的“同源策略”,可以参...

  • Http浅析【2】——ajax跨域问题

    视频参考:ajax跨域完全讲解 本文精华版:【综合】ajax跨域问题 什么是跨域问题 简单来讲,当前台调用后台,如...

  • 理解ajax跨域

    跨域产生的原因 ionic项目什么情况下会产生ajax跨域问题 针对ionic项目开渔问题我们怎么去避免 跨域产生...

  • 使用JSONP解决ajax跨域

    在日常开发中,不免遇到跨域的问题。在这里我们介绍使用Jsonp来解决ajax跨域的问题 什么是跨域? 跨域,指的是...

  • nginx反向代理,解决前端跨域问题

    ajax跨域问题,是每一个web前端都会经常遇到的问题,当然解决前端跨域的方法也有很多方法,这里我只记录一下如何使...

网友评论

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

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