Como descobrir se uma solicitação é ajax?
Eu tento descobrir se uma solicitação para um arquivo PHP é enviada por ajax ou não.
Eu pesquisei no Google e li vários artigos que sugerem o seguinte método:
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
echo 'This is an ajax request!';
exit;
}
echo 'This is not an ajax request!';
Mas meu servidor não tem essa variável:Undefined index: HTTP_X_REQUESTED_WITH ...
É assim que eu faço a solicitação do ajax:
$.ajax({
url: 'http://URL/test.php',
complete: function(res) {
console.log(res.responseText);
}
});
Estou fazendo a ligação a partir de um URL diferente, então configureiheader('Access-Control-Allow-Origin: *');
Eu descobri uma diferença em$_SERVER
Apesar:
Solicitação Ajax:$_SERVER[HTTP_ACCEPT] => */*
Nenhuma solicitação do Ajax:$_SERVER[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Então, minha pergunta é: existe uma maneira de eu conseguirHTTP_X_REQUESTED_WITH
para dentro$_SERVER
? Caso contrário, existe uma maneira adequada de descobrir se a solicitação é AJAX usando o$_SERVER[HTTP_ACCEPT]