ajax在ie9浏览器请求失败的兼容问题

ajax在ie9浏览器请求失败的兼容问题

在chrome下调试接口的时候都可以正常访问,但是在IE9下访问的时候数据都没有了,查看ajax请求过程,既然没数据,那就是请求失败了,在error的回调里打印信息,确实没进入success回调里;$.ajax方法一直在执行error

针对 拒绝访问 是由于浏览器安全机制导致的,解决方法

为点击IE浏览器的的“工具->Internet 选项->安全->自定义级别”将“其他”选项中的“通过域访问数据源”选中为“启用”或者“提示”,点击确定就可以了(但是此法需要用户自行设置不太现实)

解决办法

1.解决ajax时出现No Transport,在使用ajax之前添加: jQuery.support.cors = true
jQuery.support.cors = true;//浏览器支持跨域访问

$.ajax({
    url: "http://23y8q85354.qicp.vip/getUserInfo",
    type: "GET",
    dataType: "json",
    async: true,
    cache: false,
    crossDomain:  true,
    success: res => {
        console.log(1,res)
    },
    error: err => {
        console.log(2,err)
    }
})

$.ajax属性及用法

  • async

    默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

  • cache

    默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。jQuery 1.2 新功能。

  • IE中的crossDomain=true属性设置

    再ajax请求过程中设置了crossDomain=true属性,再谷歌内核中是可以正确解读为support.cors = true,发现其他浏览器中都是support.cors = true,唯独在IE中support.cors = false,这个属性的判断来自于support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ),其中xhrSupported= new window.XMLHttpRequest(),ie9中XMLHttpRequest没有withCredentials属性。

2. 在jquery后引入 jQuery-ajaxTransport-XDomainRequest 插件
<!--[if lte IE 9]>
    <script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js'></script>
<![endif]-->

如果以上方法不行再试试nginx配置反向代理

location /api/ {
    rewrite ^/api/(.*)$ /$1 break;  #所有对后端的请求加一个api前缀方便区分,真正访问的时候移除这个前缀
    # API Server
    proxy_pass http://132.122.14.6:9800/;  #将真正的请求代理到serverB,即真实的服务器地址,ajax的url为/api/user/1的请求将会访问http://www.serverB.com/user/1
}

参考:vue项目部署方式:tomcat部署和nginx部署

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值