繁体   English   中英

XMLHttpRequest对象回调不会在跨域jquery / Ajax请求中触发

[英]XMLHttpRequest object callback doesn't fire in crossdomain jquery/Ajax request

所以我有以下代码:

$.ajax({
    xhr: function() {
        var xhr = new window.XMLHttpRequest();

       xhr.addEventListener("progress", function(evt) {
           if (evt.lengthComputable) {
               var percentComplete = evt.loaded / evt.total;
               console.log(percentComplete);
           }
       }, false);

       return xhr;
    },
  dataType: "jsonp",
  contentType: "text/javascript charset-utf-8",
  url: "http://*******.com/pcm/datamobile.asmx/ObtenerContactos",
  crossDomain: true, 
  timeout:8000000,
  data: {sessionId: 1},
  error : function (xhr, status) {

      },
 success : function() {FirstAjaxReady();} 
});   
}

xhr:选项中的函数从不触发。 我正在尝试获取有关该请求的进度报告。 这可能与跨域事实有关。 如果是这样,是否有办法在跨域Ajax请求中提供进度报告?

还需要在服务器端启用跨域或跨域

http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

而且CORS的安全性似乎决定了不会发送进度:

CORS API规范还需要确保在跨域请求状态设置为预检完成或成功之前,不透露任何内容,以防止例如端口扫描。

在XMLHttpRequest中,仅在跨域请求状态设置为成功后才调度进度事件。 仅在跨域请求状态预检完成后才调度上载进度事件。

如果我没看错的话。

http://www.w3.org/TR/cors/#preflight-request

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM