サーバーは、正しい要求ヘッダーを送信するように変更されました。
サーバー - 応答ヘッダー:
Access-Control-Max-Age: 86400
Access-Control-Allow-Methods: GET, OPTIONS, POST
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type, X-Requested-With
サーバー (a.foo.com) に Spring Web mvc を使用し、mvc インターセプターを使用して HttpResponseHeaders を設定しています。
また、オリジンを「*」ではなく、リクエストのドメインに設定しようとしました。
クライアント - jQuery コード
jQuery/AJAX - jquery 1.7.1 を使用しています POST リクエストの概要を次に示します。
var settings = {};
settings.url = "http://a.foo.com/api";
settings.type = 'POST';
settings.data = JSON.stringify(request);
settings.dataType = 'json';
settings.contentType = 'application/json; charset=utf-8';
settings.crossDomain = true; // adding or removing this, didn't make a difference
.... (setup callbacks etc)
jQuery.ajax(settings);
ウェブサイト - html/js は a.bar.com でホストされています
クライアントのエラー - JavaScript コンソール (Chrome でのテスト)
XMLHttpRequest はhttp://a.foo.com/apiを読み込めません。Origin http://a.bar.comは Access-Control-Allow-Origin で許可されていません。
質問
私が見逃しているものは他にありますか?主に POST サポートが必要なため、JSONP の使用は避けたいと思います。
ご指摘いただきありがとうございます。