Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过JavaScript访问HTTP请求头字段?_Javascript_Http_Http Headers - Fatal编程技术网

如何通过JavaScript访问HTTP请求头字段?

如何通过JavaScript访问HTTP请求头字段?,javascript,http,http-headers,Javascript,Http,Http Headers,我想在客户端JavaScript中捕获HTTP请求头字段,主要是Referer和User代理。我如何访问它们 Google Analytics设法通过JavaScript获取数据,他们让您将这些数据嵌入到页面中,因此这绝对是可能的 相关: 如果您想访问referer和user-agent,客户端Javascript可以使用它们,但不能直接访问头部 要检索推荐人,请使用。 要访问用户代理,请使用 正如其他人所指出的,HTTP头不可用,但您特别询问了通过Javascript可用的referer和

我想在客户端JavaScript中捕获HTTP请求头字段,主要是Referer和User代理。我如何访问它们


Google Analytics设法通过JavaScript获取数据,他们让您将这些数据嵌入到页面中,因此这绝对是可能的

相关:


如果您想访问referer和user-agent,客户端Javascript可以使用它们,但不能直接访问头部

要检索推荐人,请使用。
要访问用户代理,请使用


正如其他人所指出的,HTTP头不可用,但您特别询问了通过Javascript可用的referer和user agent。

几乎根据定义,客户端Javascript不在HTTP请求的接收端,因此它没有要读取的头。最常见的情况是,JavaScript是http响应的结果。如果您试图获取生成响应的http请求的值,则必须编写服务器端代码以将这些值嵌入到生成的JavaScript中


让服务器端代码生成客户端代码变得有点棘手,所以请确保这是您所需要的。例如,如果需要用户代理信息,您可能会发现获取JavaScript为浏览器检测提供的各种值就足够了。从navigator.appName和navigator.appVersion开始。

我会想象谷歌从服务器端获取一些数据-记住,当一个页面加载到你的浏览器中,其中包含谷歌分析代码时,你的浏览器会向谷歌的服务器发出请求;谷歌可以通过这种方式获取数据,也可以通过页面中嵌入的JavaScript获取数据。

这可以通过JavaScript访问,因为它是加载文档的属性,而不是其父文档的属性

下面是一个简单的例子:

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

文件。编写(文件。参考);
在PHP中,同样的事情是:

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

引用者和用户代理是请求头,而不是响应头

这意味着它们是通过浏览器或ajax调用(您可以修改值)发送的,它们是在您得到HTTP响应之前决定的

因此,基本上您不是要求HTTP头,而是要求浏览器设置

从document.referer和navigator.userAgent获得的值可能不是实际的标题,而是浏览器的设置

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

在引号中键入您想要的任何其他服务器变量名称。

从JavaScript获取标题的一种方法是使用WebRequest API,它允许我们访问源自http或WebSocket的不同事件,其生命周期如下:

因此,为了访问页面的标题,应该如下所示:

browser.webRequest.onHeadersReceived.addListener(
(标题详情)=>{
控制台日志(“请求:+headersDetails”);
},
{URL:[“*://主机名/*”]}
);`
问题是,要使用此API,必须从浏览器执行,即浏览器对象引用浏览器本身(选项卡、图标、配置),并且浏览器确实可以访问任何页面的所有请求和响应,因此您必须向用户请求权限才能执行此操作(必须在清单中声明权限,浏览器才能执行这些权限)

同时,作为浏览器的一部分,您将失去对页面的控制,也就是说,您无法再操作DOM(而不是直接操作),因此,要再次控制DOM,请按以下方式执行:

browser.webRequest.onHeadersReceived.addListener(
browser.tabs.executeScript({
代码:“console.log(“Headers success”),
});
});
或者如果你想运行大量的代码

browser.webRequest.onHeadersReceived.addListener(
browser.tabs.executeScript({
文件:'./headersrevied.js',
});
});
通过控制浏览器,我们还可以注入CSS和图像


文档:

你有没有一个参考资料,我可以在那里找到所有可用的值?我不在乎它是否是间接可用的,所以不要过多地理解我对这个问题无知的措辞。@GrantWagner:我需要知道.No,Google的代码是否是嵌入在我的静态html中的JavaScript,就我在sourceforge.net上的情况而言。没有任何可能性服务器端执行的灵活性。或者你的意思是在他们的服务器上?错了,谷歌分析脚本的引用者是嵌入它的页面。很可能11年前@JasonBunting表示请求(包括IP地址以及来自请求者的所有头,这将是最终用户)正如Google的Web服务器读取的那样,它可以通过编程方式与通过JS脚本收集的数据相关联。我为什么要写这个。@Soleil-你为什么要写这个?:)谁知道呢?我记不起这方面的任何事情,但你知道——十多年前我不是现在的我最初的问题是是否可以在javascript中访问HTTP头。为了清楚起见,把那个问题分开贴了出来。这与JavaScript有什么关系?仅供参考:这是ASP,但不是JavaScript。我只是问这个问题,因为我需要知道。