Как обнаружить междоменный запрос ajax в php - PullRequest
3 голосов
/ 03 апреля 2012

Для обычного запроса AJAX я использую:

strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'

Но это не работает с междоменным запросом.

Как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

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 & обратного вызова = jQuery172028849187534502896_1333494007273 & _ = 1333494443880

Изменить: Ответ ниже, чтобы выяснить, является ли он междоменным или нет, не проверяя, является ли это AJAX

Ответ на вопрос «Как определить, является ли ajax-вызов из другого домена»:

Я использую вызов jQuery.ajax, а для меня переменная $_SERVER['HTTP_REFERER'] работает нормально.

Если я использую страницу на локальном компьютере, этот суперглобальный возвращает пустую строку.

Если я использую страницу в Интернете, значение $_SERVER['HTTP_REFERER'] возвращает URL-адрес страницы, которая сделала вызов ajax. Так что проверка значения этого может сказать вам, что вам нужно знать.

0 голосов
/ 21 июня 2016

используйте $ _SERVER ['HTTP_ORIGIN'] для получения домена запроса

0 голосов
/ 03 апреля 2012

вы можете использовать функцию php getallheaders (). Вы можете проверить запись хоста

...