Diferenciación entre una solicitud AJAX de llamada / navegador
-
03-07-2019 - |
Pregunta
¿Hay algo en el encabezado de una solicitud HTTP que me permita diferenciar entre una llamada AJAX y una solicitud directa del navegador desde un cliente determinado? ¿Son las cadenas de agente de usuario generalmente las mismas independientemente?
Solución
Si usas Prototype, jQuery, Mootools o YUI, deberías encontrar un encabezado X-Requested-With: XMLHttpRequest que hará el truco por ti. Debería ser posible insertar cualquier encabezado que desee con otras bibliotecas.
En el nivel más bajo, dado un XMLHttpRequest o un objeto XMLHTTP, puedes configurar este encabezado con el método setRequestHeader de la siguiente manera:
xmlHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
Otros consejos
Después de algunas investigaciones, parece que el mejor enfoque sería simplemente especificar una cadena de agente de usuario personalizada al realizar llamadas AJAX y luego verificar esta cadena de agente de usuario personalizada en el servidor.