Pergunta

Eu quero capturar os campos de cabeçalho de solicitação HTTP, principalmente o Referer e User-Agent, dentro do meu JavaScript do lado cliente. Como posso acessá-los?


O Google Analytics consegue obter os dados através de JavaScript que eles têm de incorporar em você páginas, por isso é definitivamente possível.

Relacionado:
acessando a página web cabeçalhos HTTP em JavaScript

Foi útil?

Solução

Se você deseja acessar referrer e user-agent, que estão disponíveis para client-side Javascript, mas não por acessar os cabeçalhos diretamente.

Para recuperar a referência, utilize document.referrer .
Para acessar o user-agent, use navigator.userAgent .

Como já foi indicado, os cabeçalhos HTTP não estão disponíveis, mas você perguntou especificamente sobre o referer e user-agent, que estão disponíveis via Javascript.

Outras dicas

Quase por definição, do lado do cliente o JavaScript não é no fim de recepção de um pedido http, por isso não tem cabeçalhos para ler. Mais comumente, o JavaScript é o resultado de uma resposta http. Se você está tentando obter os valores da solicitação HTTP que gerou a sua resposta, você terá que escrever código do lado do servidor para incorporar esses valores no JavaScript que você produz.

Ele fica um pouco complicado para ter o código do lado do servidor gerar o código do lado do cliente, para ter certeza que é o que você precisa. Por exemplo, se você deseja que as informações User-agent, você pode achar que é suficiente para obter os vários valores que JavaScript oferece para a detecção do navegador. Comece com navigator.appName e navigator.appVersion.

Isso pode ser acessado através de JavaScript porque é uma propriedade do documento carregado, não de seu pai.

Aqui está um exemplo rápido:

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

A mesma coisa em PHP seria:

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

referenciador e facilidade de agente são pedido cabeçalho, não cabeçalho de resposta.

Isso significa que eles são enviados pelo navegador, ou a sua chamada ajax (que você pode modificar o valor), e eles são decididas antes de chegar HTTP resposta.

Então, basicamente, você não está pedindo um cabeçalho HTTP, mas a configuração do navegador.

O valor que você recebe de document.referer e navigator.userAgent pode não ser o cabeçalho real, mas um ambiente de navegador.

Eu imagino agarra Google alguns do lado do servidor de dados - lembre-se, quando uma página é carregada no navegador que tem o código do Google Analytics dentro dele, o navegador faz uma solicitação para os servidores do Google; Google pode obter dados dessa forma, bem como através do JavaScript incorporado na página.

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

Tipo dentro das aspas qualquer outro nome de variável servidor que deseja.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top