$http/Ajax 调用 Windows Phone 8.1 应用程序的奇怪行为

Strange Behavior of $http/Ajax Calls on Windows Phone 8.1 App

我最近陷入了一个奇怪的问题,由 Visual Studio 应用程序中的多平台混合应用程序抛出。我的开发环境详细信息如下:

  1. Visual Studio 2013 年第 3 版
  2. 科尔多瓦 4.0
  3. Angularjs1.4
  4. 离子 1.4
  5. 诺基亚 Lumia 1320 [Windows 8.1 OS]

我有一个将与移动应用程序交互的 Web 应用程序,部署在服务器机器上,可以通过内部企业网络和互联网访问。

现在的问题是,当我[移动设备]连接到内部网络时,$http 调用失败,状态代码为 0。内部挖掘显示实际返回状态码是-1.

但是,当我在 phone 中切换到移动数据时,ajax 通话顺利并成功完成。 现在,如果我切换回内部网络,它会再次开始正常工作。 !!!!

http调用很简单,用了promiseAPI...我也有一些请求拦截器

对这种奇怪行为的任何解释,或者更恰当地说是相同的解决方案??

摸索了 2 天多后,我终于得出结论,是我的浏览器出了问题。

正如我所说,我使用的是 Windows Phone 8.1,它使用 Internet Explorer 11 作为默认渲染。此外,我的 Web 服务器实际上位于代理服务器 [Apache HTTP] 之后。

现在,真正的问题是 ajax 调用返回的响应状态代码为 0。原因是 Ajax 调用被挂起Apache HTTP 代理服务器,因为一些隧道问题。请注意,这特别发生在 IE11 和 Apache HTTP 服务器上。

发生这种情况是因为我在基于 HTTPS 的代理服务器上使用 POST 请求。

Now the solution is too non-technical, but that's what saved my life. In order to save your life from this issue, You must

1.将您的 POST 请求转换为 GET 请求

2。或者在向服务器发出 POST 请求之前,向同一服务器发出 GET 请求。

就我而言,我采用了第二种方法,它挽救了我的生命。将此作为答案发布,这样它也可以拯救其他人。

您可以参考以下链接了解更多详情。

  1. IE10/IE11 Abort Post Ajax Request After Clearing Cache with error “Network Error 0x2ef3”

  2. Making XHR Request to HTTPS domains with WinJS