Differenziazione tra una richiesta di chiamata / browser AJAX
-
03-07-2019 - |
Domanda
Esiste 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 dell'agente utente sono generalmente le stesse indipendentemente?
Soluzione
Se usi Prototype, jQuery, Mootools o YUI dovresti trovare un'intestazione X-Requested-With: XMLHttpRequest che farà al caso tuo. Dovrebbe essere possibile inserire qualsiasi intestazione che ti piace con altre librerie.
Al livello più basso, dato un oggetto XMLHttpRequest o XMLHTTP, puoi impostare questa intestazione con il metodo setRequestHeader come segue:
xmlHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
Altri suggerimenti
Dopo alcune ricerche, sembra che l'approccio migliore sarebbe semplicemente specificare una stringa dell'agente utente personalizzato quando si effettuano chiamate AJAX e quindi verificare la presenza di questa stringa dell'agente utente personalizzato sul server.