Pregunta

Deseo capturar los campos de encabezado de solicitud HTTP, principalmente el Referer y el User-Agent, dentro de mi JavaScript del lado del cliente. ¿Cómo puedo acceder a ellos?


Google Analytics logra obtener los datos a través de JavaScript que tienen incrustados en sus páginas, por lo que definitivamente es posible.

  

Relacionados:
   Acceso a los encabezados HTTP de la página web en JavaScript

¿Fue útil?

Solución

Si desea acceder a la referencia y al agente de usuario, estos están disponibles para Javascript del lado del cliente, pero no accediendo a los encabezados directamente.

Para recuperar el referente, use document.referrer .
Para acceder al agente de usuario, use navigator.userAgent .

Como otros han indicado, los encabezados HTTP no están disponibles, pero usted preguntó específicamente sobre el referente y el agente de usuario, que están disponibles a través de Javascript.

Otros consejos

Casi por definición, el JavaScript del lado del cliente no se encuentra en el extremo receptor de una solicitud http, por lo que no tiene encabezados para leer. Por lo general, su JavaScript es el resultado de una respuesta http. Si está intentando obtener los valores de la solicitud http que generó su respuesta, tendrá que escribir el código del lado del servidor para incrustar esos valores en el JavaScript que produce.

Se vuelve un poco complicado hacer que el código del lado del servidor genere el código del lado del cliente, así que asegúrese de que sea lo que necesita. Por ejemplo, si desea la información del agente de usuario, puede encontrarla suficiente para obtener los diversos valores que JavaScript proporciona para la detección del navegador. Comience con navigator.appName y navigator.appVersion.

Se puede acceder a través de Javascript porque es una propiedad del documento cargado, no de su padre.

Aquí hay un ejemplo rápido:

<script type="text/javascript">
document.write(document.referrer);
</script>

Lo mismo en PHP sería:

<?php echo $_SERVER["HTTP_REFERER"]; ?>

Referer y user-agent son encabezado de solicitud, no encabezado de respuesta.

Eso significa que son enviados por el navegador, o su llamada ajax (que puede modificar el valor), y se deciden antes de obtener la respuesta HTTP.

Entonces, básicamente, no está solicitando un encabezado HTTP, sino una configuración del navegador.

El valor que obtiene de document.referer y navigator.userAgent puede no ser el encabezado real, sino una configuración del navegador.

Me imagino que Google toma algunos datos del lado del servidor; recuerde, cuando una página se carga en su navegador que tiene el código de Google Analytics, su navegador realiza una solicitud a los servidores de Google; Google puede obtener datos de esa manera, así como a través del JavaScript incrustado en la página.

var ref = Request.ServerVariables("HTTP_REFERER");

Escriba entre comillas cualquier otro nombre de variable de servidor que desee.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top