Для обычного запроса ajax я использую:
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
Но это не работает с запросом на перекрестный домен.
Как я могу сделать?
Edit2: Если вы используете функцию jQuery.ajax следующим образом:
var request = $.ajax({ url: "http://somesite.com/somescript.php?somevar=somevalue", dataType: "jsonp", jsonp: 'callback', success: function(data) { alert('Done!'); } });
Затем вы можете проверить переменную $_SERVER['REQUEST_URI']
или просто $_GET['callback']
и $_GET['_']
. REQUEST_URI будет выглядеть так:
/somescript.php?somevar=somevalue&callback=jQuery172028849187534502896_1333494007273&_=1333494443880
Изменить: нижеприведенный ответ заключается в том, чтобы узнать, является ли он междоменным или нет, а не проверяет, является ли это AJAX
Ответ на вопрос «Как определить, является ли ajax-вызов из другого домена»:
Я использую вызов jQuery.ajax, и для меня использование переменной $_SERVER['HTTP_REFERER']
отлично работает.
Если я использую страницу на своем локальном компьютере, этот суперглобал возвращает пустую строку.
Если я использую страницу в Интернете, значение $_SERVER['HTTP_REFERER']
возвращает URL-адрес страницы, сделавшей вызов ajax. Поэтому проверка значения этого может рассказать вам, что вам нужно знать.
используйте $ _SERVER ['HTTP_ORIGIN'], чтобы получить домен запроса
вы можете использовать функцию getallheaders () php. вы можете проверить запись хоста