Я настроил Разделение ресурсов перекрестного Источника на сервере (Причал с помощью CrossOriginFilter), и это работает отлично над IE8 и Firefox. На Chrome это просто... не делает.
$.ajax({ url : crossOriginURL,
type : "GET",
error : function(req, message) {
alert(message);
},
dataType : "json" } );
Функция ошибок вызывается с полезным сообщением "ошибка". Это, кажется, выполняет запрос, но без любого из заголовков Вы ожидали бы. Если URL от того же источника, он хорошо работает.
Я решил свою проблему следующим образом:
Добавьте это в свой PHP-код:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true ");
header("Access-Control-Allow-Methods: OPTIONS, GET, POST");
header("Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control");
Или добавьте эти заголовки в свой ответ.
Проблема: браузеры запрашивают у сервера параметры перед вашим основным запросом, чтобы проверить, есть ли на сайте возможность разрешить общение с другим источником, а затем, если да, они выполняют ваш запрос POST или GET.
РЕДАКТИРОВАТЬ: Попробуйте это (без вашего хака), чтобы увидеть, получаете ли вы данные...
$.ajax({ url : crossOriginURL,
type : "GET",
error : function(req, message) {
alert(message);
},
success : function(data) {
alert(data);
},
dataType : "text"} );