Como faço para acessar os HTTP campos pedido de cabeçalho via JavaScript?
-
03-07-2019 - |
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
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.