在PlayStation 3、4,Xbox360,Xbox One上已重现此问题。所有版本的AjaxPro都存在此问题。

发出Ajax请求(使用AjaxPro)时,服务器返回正确的内容。但是,在回调函数中返回的对象是

{
   "error":
    {
     "Message":"","Type":"ConnectFailure","Status":200},"value":null,
     "request":
     {
       "method":"MethodName",
       "args":
       {
          "Argument1":"1111","Argument2":"2222"
       }
     },
    "context":null,"duration":18
   }
}

最佳答案

就我而言,将AjaxPro与https,TLS 1.2,带有P-256 key 交换的ECDHE_RSA和AES_256_GCM密码(IE11 +,Chrome51 +,Firefox49 +。请检查here)一起使用时,我也会遇到相同的错误。使用HMAC-SHA1密码的过时AES_256_CBC可以正常运行。

问题是服务器响应(我真的不知道为什么)之后XMLHttpRequest.statusText属性为空,并且AjaxPro.Request.prototype.doStateChange方法(ajaxpro/core.ashx文件)期望“确定”将响应视为有效:

var res = this.getEmptyRes();
if(this.xmlHttp.status == 200 && this.xmlHttp.statusText == "OK") {
    res = this.createResponse(res);
} else {
    res = this.createResponse(res, true);
    res.error = {Message:this.xmlHttp.statusText,Type:"ConnectFailure",Status:this.xmlHttp.status};
}

我最终决定重写AjaxPro.Request.prototype.doStateChange方法,并在this.xmlHttp.statusText中允许使用空值。

,我将此脚本添加到了受影响的页面:
$(function() {
    if (typeof AjaxPro != 'undefined' && AjaxPro && AjaxPro.Request && AjaxPro.Request.prototype) {
        AjaxPro.Request.prototype.doStateChange = function () {
            this.onStateChanged(this.xmlHttp.readyState, this);
            if (this.xmlHttp.readyState != 4 || !this.isRunning) {
                return;
            }
            this.duration = new Date().getTime() - this.__start;
            if (this.timeoutTimer != null) {
                clearTimeout(this.timeoutTimer);
            }
            var res = this.getEmptyRes();
            if (this.xmlHttp.status == 200 && (this.xmlHttp.statusText == "OK" || !this.xmlHttp.statusText)) {
                res = this.createResponse(res);
            } else {
                res = this.createResponse(res, true);
                res.error = { Message: this.xmlHttp.statusText, Type: "ConnectFailure", Status: this.xmlHttp.status };
            }
            this.endRequest(res);
        };
    }
});

10-08 02:17