如何通过JavaScript访问HTTP请求头域?
我想在我的客户端JavaScript中捕获HTTP请求头域,主要是Referer和User-Agent。 我怎样才能访问它们?
Google Analytics(分析)设法通过JavaScript获取数据,并将其embedded到页面中,因此绝对有可能。
有关:
在JavaScript中访问网页的HTTP头
如果您想要访问引用链接和用户代理,那么客户端Javascript可以使用这些引用,但不能直接访问头文件。
要检索引用者,请使用document.referrer
。
要访问用户代理,请使用navigator.userAgent
。
正如其他人所指出的那样,HTTP标头不可用,但是您特别询问了可通过Javascript访问的referer和user-agent。
从定义上来说,客户端的JavaScript几乎不在http请求的接收端,所以它没有标题可读。 最常见的情况是,您的JavaScript是http响应的结果。 如果您正尝试获取生成您的响应的http请求的值,则必须编写服务器端代码以将这些值embedded到您生成的JavaScript中。
让服务器端代码生成客户端代码变得有点棘手,所以确保这是你所需要的。 例如,如果您需要用户代理信息,则可能会发现获取JavaScript为浏览器检测提供的各种值是足够的。 从navigator.appName和navigator.appVersion开始。
这可以通过JavaScript访问,因为它是加载文档的属性,而不是其父文件。
这里有一个简单的例子:
<script type="text/javascript"> document.write(document.referrer); </script>
在PHP中同样的事情是:
<?php echo $_SERVER["HTTP_REFERER"]; ?>
我想Google会抓住服务器端的一些数据 – 记住,当一个页面加载到内含Google Analytics代码的浏览器中时,浏览器会向Google的服务器发出请求; Google可以通过页面中embedded的JavaScript来获取数据。
引用者和用户代理是请求头,而不是响应头。
这意味着它们是通过浏览器或您的ajax调用(您可以修改该值)发送的,并且在获得HTTP响应之前就已经决定了。
所以基本上你不是要求HTTP头,而是浏览器设置。
您从document.referer和navigator.userAgent获得的值可能不是实际的标题,而是浏览器的设置。
var ref = Request.ServerVariables("HTTP_REFERER");
在所需的引号内input任何其他服务器variables名称。