質問: $("#email").val(); $.ajax({ type: "POST", async: false, url: "http://外部サーバー/example.php", data: ajax, cache: false, success: function(html) { alert(html); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert('miss'); } }); ``` node.jsにてapache cordovaの環境を構築しています。 ローカル環境ですが、ローカルだと通信できないのか、もしくはインストールすべきものがほかにあるのかわからない状態です。 コンソールによるエラーは出ておらず、上記コードのエラー時のアラートのみ出てきます。 どうすればajax通信できるのでしょうか。
回答: 横レスするようですみません。 > > 理由: CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない > > > サーバーが CORS に対応してないのでは? CORS は HTML 5 の仕様なので依然として使えないブラウザがありますが、対応している最新ブラウザを使っているとして・・・ 要求が「シンプルなリクエスト」になる場合、CORS をサポートしているブラウザからは origin: http://<要求元のドメイン> を追加する以外には普通にサーバーに要求を出します。 サーバーが CORS をサポートしていれば、要求ヘッダの origin フィールドを見て要求側のドメインがクロスドメインアクセスを許可する対象であるかを判定し、受け入れの判断をすることができます。 受け入れ OK と判断されれば、応答ヘッダの Access-Control-Allow-Origin に * とか http://<求元のドメイン> を設定して返します。 エラーメッセージはそれがないということのようです。 Fiddler などのキャプチャツールで要求・応答を調べてください。 CORS については以下の記事およびそこからリンクが張られている記事が参考になると思います。 クロスドメインの WCF サービス