0

私は最近、Visual Studio アプリのマルチプラットフォーム ハイブリッド アプリによってスローされた奇妙な問題に悩まされています。私の開発環境の詳細は次のとおりです。

  1. Visual Studio 2013 リリース 3
  2. コルドバ 4.0
  3. Angularjs 1.4
  4. イオン1.4
  5. ノキア Lumia 1320 [Windows 8.1 OS]

モバイル アプリと対話する Web アプリがあり、サーバー マシンにデプロイされ、企業内ネットワークとインターネットの両方からアクセスできます。

問題は、[モバイル デバイスが] 内部ネットワークに接続されているときに、$http 呼び出しがステータス コード 0 で失敗することです。内部の掘り下げにより、実際に返されるステータス コードが -1 であることがわかります。

ただし、電話でモバイル データに切り替えると、ajax 呼び出しはスムーズに進み、正常に終了します。ここで、内部ネットワークに戻すと、再び完全に機能し始めます。!!!!

http 呼び出しは非常に単純で、promise API を使用しています... 私はいくつかのリクエスト インターセプターも持っています。

この奇妙な動作の説明、またはより適切な解決策はありますか??

4

1 に答える 1

0

2 日以上頭を悩ませた後、最終的に原因はブラウザにあると結論付けることができました。

私が言ったように、私は Windows Phone 8.1 を使用していました。これは Internet Explorer 11 をデフォルトのレンダリングとして使用します。また、私の Web サーバーは実際にはプロキシ サーバー [Apache HTTP] の背後にありました。

さて、本当の問題は、ajax 呼び出しが応答ステータス コード 0 を返すことでした。その理由は、トンネリングの問題により、Apache HTTP Proxy Server によって Ajax 呼び出しが中断されていたためです。これは特に IE11 と Apache HTTP Server で発生していたことに注意してください。

これは、HTTPS ベースのプロキシ サーバーで POST リクエストを使用していたため発生していました。

今の解決策は技術的ではありませんが、それが私の命を救ったのです。この問題からあなたの命を救うために、あなたはしなければなりません

1. POST リクエストを GET リクエストに変換します。

2. または、サーバーに POST リクエストを送信する前に、同じサーバーに GET リクエストを送信します。

私の場合、2 番目のアプローチを採用し、命が救われました。これを回答として投稿して、他の人も救うようにします。

詳細については、次のリンクを参照してください。

  1. IE10/IE11 は、エラー「ネットワーク エラー 0x2ef3」でキャッシュをクリアした後、Post Ajax リクエストを中止します</a>

  2. WinJS を使用して HTTPS ドメインに XHR リクエストを作成する

于 2015-02-05T04:32:45.060 に答える