Javascript 服务器返回重定向后,iOS设备上的AJAX或XHR请求失败,代码为0(302)

Javascript 服务器返回重定向后,iOS设备上的AJAX或XHR请求失败,代码为0(302),javascript,ios,ajax,xmlhttprequest,Javascript,Ios,Ajax,Xmlhttprequest,我正在开发一个移动应用程序,它是用Cordova(PhoneGap)开发的。 我的基本代码是用JavaScript编写的,并编译成原生Android和iOS代码。 在一个加载XML的请求中,我向UrlA发送了一个请求,服务器将请求重定向(状态302)到UrlB。然后,一个XML响应从UrlB返回 所有这些过程都在Android设备(和桌面)上运行 但在iOS设备上,由于某种原因,对UrlA的请求失败,代码为0 我尝试将我的请求表单jQuery的Ajax更改为带有XHR对象的纯JS解决方案。但结果

我正在开发一个移动应用程序,它是用Cordova(PhoneGap)开发的。 我的基本代码是用JavaScript编写的,并编译成原生Android和iOS代码。 在一个加载XML的请求中,我向UrlA发送了一个请求,服务器将请求重定向(状态302)到UrlB。然后,一个XML响应从UrlB返回

所有这些过程都在Android设备(和桌面)上运行

但在iOS设备上,由于某种原因,对UrlA的请求失败,代码为0

我尝试将我的请求表单jQuery的Ajax更改为带有XHR对象的纯JS解决方案。但结果是一样的

原始Ajax请求(仅适用于Android)

我的第二次尝试,使用XHR请求(仅适用于Android)

我还注意到,在Android设备上,当使用XHR对象运行代码时,我们得到的都是readyState(1到4,一个在外部之后) 但在iOS设备上,我们只获得readyState 1和readyState 4,但状态码为0。

替换

if (XHR.status == 200) // OK

if((XHR.status>=200&&XHR.status<300)||
(XHR.status===0&!!XHR.responseXML))

我也有同样的问题。谁有解决问题的办法
var XHR = new XMLHttpRequest();
if (XHR)
{
   var method = 'GET';
   var isAsync = true;

   XHR.onreadystatechange = function()
   {
      switch (XHR.readyState)
      {
         case 0:
            console.log("# XHR: State 0 - Request isn't initialized");
            break;
         case 1:
            console.log("# XHR: State 1 - Request was set up");
            break;

         case 2:
            console.log("# XHR: State 2 - Request was sent");
            break;

         case 3:
            console.log("# XHR: State 3 - Request in progress");
            break;

         case 4:
            console.log("# XHR: State 4 - Request is completed");
            if (XHR.status == 200) // OK
            {
               console.log("# XHR: Request Success!");
               console.log(XHR);

               var responseText = XHR.responseText;
               var responseXml = XHR.responseXML;

               successCallback(responseXml)
            }
            else // request failed
            {
               console.warn("# XHR: Request Failed!");
               console.log(XHR);

               failerCallback("# XHR: Request failed! [Status: " + XHR.status + "]");
            }
            break;

            default:
               console.log("# XHR: Unknown ReadyState [" + XHR.readyState + "]");
               break;
      }
   };

   XHR.open(method, xmlUrl, isAsync);
   XHR.send(); // Start request
}
else
{
   failerCallback("XHR isn't defined");
}
if (XHR.status == 200) // OK
if ((XHR.status >= 200 && XHR.status < 300) ||
   (XHR.status === 0 && !!XHR.responseXML))