【问题标题】:Strange Behavior of $http/Ajax Calls on Windows Phone 8.1 AppWindows Phone 8.1 应用程序上 $http/Ajax 调用的奇怪行为
【发布时间】:2015-04-03 14:24:16
【问题描述】:

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

  1. Visual Studio 2013 第 3 版
  2. 科尔多瓦 4.0
  3. Angularjs 1.4
  4. 离子 1.4
  5. 诺基亚 Lumia 1320 [Windows 8.1 操作系统]

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

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

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

http调用很简单,使用promise API……我也有一些请求拦截器。

对这种奇怪行为的任何解释,或者更合适的解决方案??

【问题讨论】:

    标签: angularjs cordova windows-phone-8.1 ionic-framework multi-device-hybrid-apps


    【解决方案1】:

    在摸了两天多之后,我终于可以断定是我的浏览器是罪魁祸首。

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

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

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

    现在的解决方案太非技术性了,但这就是救了我的命。为了从这个问题中挽救你的生命,你必须

    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

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 2016-03-23
      • 2016-02-24
      • 2015-01-26
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      相关资源
      最近更新 更多