![]() |
1
396
无法读取当前的标题。您可以向同一URL发出另一个请求并读取其标头,但不能保证标头与当前标头完全相同。
使用以下JavaScript代码通过执行以下操作来获取所有HTTP标头
|
![]() |
2
322
遗憾的是,没有API为您的初始页面请求提供HTTP响应头。这是这里发布的原始问题。它已经 repeatedly asked 同样,因为有些人希望在不发出另一个页面请求的情况下获得原始页面请求的实际响应头。
|
![]() |
3
31
使用
最好的办法就是做一个
关于这样做的一些例子,请看 http://www.jibbering.com/2002/4/httprequest.html 只有我的2美分。 |
![]() |
4
30
服务工作者的解决方案服务工作者能够访问网络信息,其中包括标头。好的一面是,它适用于任何类型的请求,而不仅仅是XMLHttpRequest。 它是如何工作的:
工作示例:服务人员的理解有点复杂,所以我建了一个小图书馆来做这一切。它可以在github上找到: https://github.com/gmetais/sw-get-headers . 限制:
|
![]() |
5
18
(2021)答案 没有 额外的HTTP调用(适用于除Safari之外的所有地方)虽然这是不可能的 一般说来 读取顶级HTML导航的任意HTTP响应头,如果您控制服务器(或途中的中间箱)并希望向JavaScript公开一些信息,而这些信息除了通过头之外无法通过其他方式轻松公开:
您可以使用
(*在支持的浏览器中:Firefox 61、Chrome 65、Edge 79;没有IE, no Safari yet 截至2021年9月,没有立即发货的计划;虽然 it may be implemented for same-origin JS 一天) 例子:
示例如何 Wikipedia 使用此标头公开有关缓存命中/未命中的信息:
代码示例(需要考虑Safari和IE中缺乏浏览器支持):
此日志
笔记:
|
![]() |
6
14
向JavaScript发送标头信息的另一种方式是通过Cookie。服务器可以从请求头中提取所需的任何数据,并将其发送回
|
![]() |
7
7
对于那些寻找将所有HTTP标头解析为可以作为字典访问的对象的人来说
|
![]() |
8
6
您无法访问http标头,但其中提供的一些信息在DOM中可用。例如,如果你想看到http引用器(sic),请使用document.referrer。对于其他http标头,可能还有其他类似的标头。试着在谷歌上搜索你想要的特定内容,比如“http referer javascript”。 我知道这应该是显而易见的,但我一直在搜索“http headers javascript”之类的东西,而我真正想要的是引用者,但没有得到任何有用的结果。我不知道为什么我没有意识到我可以提出更具体的问题。 |
![]() |
9
5
像许多人一样,我一直在挖网,没有真正的答案:( 尽管如此,我还是找到了一种可以帮助他人的旁路。在我的情况下,我完全控制我的网络服务器。事实上,它是我应用程序的一部分(见最终参考)。对我来说,在http响应中添加脚本很容易。我修改了httpd服务器,在每个html页面中注入了一个小脚本。我只在头部构造后推送一个额外的“js脚本”行,该行在浏览器中从我的文档中设置一个现有变量[我选择位置],但任何其他选项都是可能的。虽然我的服务器是用nodejs编写的,但我毫不怀疑PHP或其他语言也可以使用同样的技术。
现在,从我的服务器加载的每个html页面,在接收时都由浏览器执行此脚本。然后,我可以很容易地从JavaScript中检查变量是否存在。在我的用例中,我需要知道我是否应该使用JSON或JSON-P配置文件来避免CORS问题,但同样的技术也可以用于其他目的[即:在开发/生产服务器之间进行选择,从服务器获取REST/API密钥,等等…] 在浏览器上,你只需要直接从JavaScript中检查变量,就像我的例子一样,我用它来选择我的Json/JQuery配置文件
|
![]() |
10
4
Allain Lalonde的链接让我度过了美好的一天。
只是在这里添加一些简单的html代码。
注意:您会收到第二个请求的标头,结果可能与初始请求不同。
另一种方式 是更现代的吗
fetch()
API
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch 每 caniuse.com 它由Firefox40、Chrome42、Edge14、Safari11支持 工作示例代码:
|
![]() |
11
4
如果我们谈论的是 要求 headers,您可以在执行XmlHttpRequests时创建自己的headers。
|
![]() |
12
4
将标头作为更方便的对象获取(改进 Raja's answer ):
|
![]() |
13
3
我刚刚进行了测试,使用Chrome版本28.0.1500.95时,这对我来说是有效的。 我需要下载一个文件并读取文件名。文件名在标题中,所以我做了以下操作:
输出:
|
![]() |
14
3
|
![]() |
15
3
使用mootools,您可以使用
|
![]() |
16
-1
这是一个老问题。不确定何时支持变得更加广泛,但
|
![]() |
17
-1
如前所述,如果您控制服务器端,那么应该可以在初始响应中将初始请求标头发送回客户端。 例如,在Express中,以下操作有效:
|
![]() |
18
-2
我认为这个问题走错了路, 如果你想从JQuery/JavaScript中获取Request标头,答案就是否定的。其他解决方案是创建一个aspx页面或jsp页面,这样我们就可以很容易地访问请求标头。 将aspx页面中的所有请求放入会话/cookies中,然后您可以在JavaScript页面中访问Cookie。。 |