微信浏览器中的XMLHttpRequest.readyState为0

是用vue构建的项目,在微信浏览器下同样的页面请求,只会在iphone下出现,而且是在https的情况下出现(而且并不是100%出现,大概50%的概率出现吧),http的不会这种问题,vue-resourcejquery的请求方法我都试了,插件造成原因大概可以排除,报错的原因是XMLHttpRequest.readyState为0,XMLHttpRequest对象没有初始化,在vue中造成这种情况的原因大概率是什么情况
下面是用jquery报错打印出的代码

{ "readyState": 0, "status": 0, "statusText": "error" }


下面是vue-resource简单的测试代码

<script>
import {testUrl} from 'common/config'
export default {
    data(){
        return{
            content:'还没加载数据',
            status:'请求状态'
        }
    },
    mounted() {
      this.Request()
    },
    methods: {
        Request(){
           this.content='开始加载中...'
           this.$http({
                method:'GET',
                url:testUrl
            }).then((res)=>{
                this.status='请求成功'
                this.content = res
                // alert('请求成功')            
            }).catch((err)=>{
                this.status='请求失败'
                this.content = err
                 // alert('请求失败') 
            })

        }  
    }
}

</script>
阅读 5.8k
5 个回答

你解决了嘛 我也遇到了

是不是https证书不被信任

我遇到类似的情况是同时使用表单提交和ajax数据请求,这里你只用其中一种即可。如果你的不是,还是贴代码看看再说。

用个抓包工具,看看。。。

解决了,我这边用抓包工具,同时后台那边加上log日志,发现了问题所在:在企微端,那个cookie过十几秒就莫名丢失了,后台那边有相关验证的,所以就触发了后台验证cookie的,后台重定向了,所以导致接口的statue为0;因为http请求state为0有以下几种原因:
当我们得到Http status:0时,可能会是以下几种情况:

  1. url路径或协议头错误
  2. 网络断开
  3. 防火墙拦截了请求
  4. 跨域请求
  5. 服务端响应前取消

后面让后台review一下代码后,现在就正常了。

参考链接:
http://www.publiccms.com/ques...
https://fetch.spec.whatwg.org...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题