私のアプリケーションの HTML5、jQuery Mobile フロントエンドは Java サーバー (Spring、Hibernate、MySQL) と通信します。アプリケーションは、QA 環境だけでなく、私のノートブックでも問題なく動作します。QA では、サーバーの IP アドレスを使用してアプリケーションにアクセスしています。Live 環境 (QA と同じサーバーで Tomcat の別の Web アプリ) でアプリケーションをホストし、ドメイン名の URL を使用してアプリケーションにアクセスしようとすると、アプリケーションの $.ajax 呼び出しでエラーが返されます。
呼び出しの 1 つは次のとおりです。
$.ajax({
   type : "GET",
   url : "http://www.smartcloudlearning.mobi:9080/SmartCloudLearningMobi/rest/resource/getResourceTypes",
   cache : false,
   async : false,
   dataType : 'json',
   success : function(rTypes) {
       Alert("success!");
   },
   error : function(XMLHttpRequest, textStatus, errorThrown) {
      alert("An error has occurred making the request: " + errorThrown);
   }
});
Firefox で次のエラーが表示されます。
An error has occurred making the request: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: http://www.smartcloudlearning.mobi/js/jquery-1.7.1.min.js :: <TOP_LEVEL> :: line 4"  data: no]
Chrome で次のエラーが表示されます。
An error has occurred making the request: Error: NETWORK_ERR: XMLHttpRequest: Exception 101
サーバー ログで、要求された Spring サービスが正常に呼び出されたことがわかりますが、クライアントがデータを受信していないようです!
URLを叩いたら
http://www.smartcloudlearning.mobi:9080/SmartCloudLearningMobi/rest/resource/getResourceTypes
ブラウザで直接、期待どおりの結果が得られます! これは、サーバー要求を Apache から Tomcat に転送する方法が原因であると感じています。
以下は、Apache / httpd サーバーの httpd.conf ファイルの行です。
ProxyPass /SmartCloudLearningMobi http://www.smartcloudlearning.mobi:9080/SmartCloudLearningMobi
ProxyPassReverse /SmartCloudLearningMobi http://www.smartcloudlearning.mobi:9080/SmartCloudLearningMobi
ここで何が問題なのか誰か教えてもらえますか? とても有難い!
私は問題を解決することができました:
URL にポート番号が含まれていたため、ブラウザーは .ajax 呼び出しでエラーを出していました。QA URL から「ライブ」URL を作成したときに、ポート番号が引き継がれました。.ajax 呼び出しの URL からポート番号を削除すると、呼び出しが成功を返し始めました。
ジェイソン・フォグリア、あなたの声明「...そしてポートも...」は、私にその角度を探求するよう促しました...どうもありがとう!