Differenziazione tra una chiamata AJAX / richiesta browser

C’è qualcosa nell’intestazione di una richiesta HTTP che mi consenta di distinguere tra una chiamata AJAX e una richiesta diretta del browser da un determinato client? Le stringhe degli user-agent di solito sono le stesse indipendentemente?

Se usi Prototype, jQuery, Mootools o YUI dovresti trovare un’intestazione X-Requested-With: XMLHttpRequest che farà il trucco per te. Dovrebbe essere ansible inserire qualsiasi intestazione che ti piace con altre librerie.

Al livello più basso, dato un object XMLHttpRequest o XMLHTTP, puoi impostare questa intestazione con il metodo setRequestHeader come segue:

xmlHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 

Dopo alcune ricerche, sembra che l’approccio migliore sarebbe semplicemente quello di specificare una stringa personalizzata di user agent quando si effettuano chiamate AJAX e quindi si verifica la presenza di questa stringa personalizzata di user-agent sul server.