Ответ 1
Если вы используете jQuery для выполнения вашего запроса ajax, он не отправит заголовок X-Requested-With (HTTP_X_REQUESTED_WITH) = XMLHttpRequest, потому что это кросс-домен. Но есть два способа исправить это и отправить заголовок:
Вариант 1) Вручную установите заголовок в вызове ajax:
$.ajax({
url: "http://your-url...",
headers: {'X-Requested-With': 'XMLHttpRequest'}
});
Вариант 2) Скажите jQuery, чтобы не использовать значения по умолчанию для перекрестных доменов, поэтому он будет хранить заголовок X-Requested-With в запросе ajax:
$.ajax({
url: "http://your-url...",
crossDomain: false
});
Но при этом сервер должен разрешать эти заголовки, тогда сервер должен печатать эти заголовки:
print "Access-Control-Allow-Origin: *\n";
print "Access-Control-Allow-Headers: X-Requested-With, Content-Type\n";
В первой строке выше будет исключена ошибка "Происхождение не разрешено Access-Control-Allow-Origin".
Во второй строке будет исключена ошибка. "Поле заголовка запроса X-Requested-With не разрешено в Access-Control-Allow-Headers".