使用JavaScript添加自定义HTTP头

使用JavaScript添加自定义HTTP头,javascript,http-headers,Javascript,Http Headers,在HTML页面上,单击图像(“img”)或锚(“a”)标记的链接时,我想为GET请求添加自定义标题。这些链接通常用于下载动态内容。这些头可以是SAML头或自定义应用程序特定头 是否可以通过JavaScript添加这些自定义标题?或者,如果我通过XMLHttpRequest添加这些,我如何实现下载功能 此要求仅适用于IE6或IE7。如果您正在使用,则setRequestHeader应该可以工作,例如 xhr.setRequestHeader('custom-header', 'value');

在HTML页面上,单击图像(“img”)或锚(“a”)标记的链接时,我想为GET请求添加自定义标题。这些链接通常用于下载动态内容。这些头可以是SAML头或自定义应用程序特定头

是否可以通过JavaScript添加这些自定义标题?或者,如果我通过XMLHttpRequest添加这些,我如何实现下载功能

此要求仅适用于IE6或IE7。

如果您正在使用,则
setRequestHeader
应该可以工作,例如

xhr.setRequestHeader('custom-header', 'value');

另外,您应该使用来修改锚的行为,以便在由于某种原因AJAX不能为您的客户机工作时(如页面上其他地方的一个被破坏的脚本)它可以工作.

我认为最简单的方法是使用querystring而不是HTTP头。

从浏览器内部向请求添加头的唯一方法是使用XMLHttpRequestSetRequestHeader方法

使用“GET”请求将下载资源。然后,诀窍是以预期的方式访问资源。表面上,您应该能够允许GET响应在短时间内可缓存,因此导航到新URL或创建带有src URL的IMG标记时,应该使用以前“GET”的缓存响应。然而,这很可能失败,特别是在IE中,在缓存方面,IE本身可能有点像一条法则

最终我同意Mehrdad的观点,使用查询字符串是最简单、最可靠的方法


另一个奇怪的选择是使用XHR向URL发出请求,该URL指示您访问资源的意图。它可以使用会话cookie进行响应,该cookie将由后续的图像或链接请求携带。

如前所述,最简单的方法是使用querystring


但由于安全原因,您不能考虑使用Cookie。

2021,这可以用.</P>完成。 首先,您必须在页面上注册一名服务人员

//index.html
window.addEventListener('load',函数(){
领航员
.服务人员
.register('/service worker.js');
});
在服务工作者中,通过调用方法捕获、修改和转发请求

//service-worker.js
self.addEventListener('fetch',函数(事件){
event.respondWith(异步函数(){
let headers=new headers()
headers.append(“X-Custom-Header”,“随机值”)
返回获取(event.request,{headers:headers})
}());
});

请注意,某些web浏览器在开发人员控制台中不显示已修改的请求。在这种情况下,可以使用tcpdump、Wireshark等工具或在服务器日志中观察请求。

+1。即使在使用XMLHttpRequest时,设置标头也不是完全可靠的。查找参数。如果使用SSL并且发送的信息是敏感信息,则不应将其放入查询字符串中,因为它不会被加密。只有http消息体是加密的,因此在header@JamesReategui这是不正确的:URL是在传输过程中加密的。潜在的安全问题可能是端点(日志、书签或历史记录)中的秘密URL的持久性,但不是在传输过程中。抱歉,没有仔细检查。但问题是,正如你提到的,这是一个潜在的安全问题。此外,不符合OWASP。请详细说明。例如,如果您希望从get请求中需要身份验证标头的服务获取图像,请执行相同的操作。您能否解释或指向参考资料,说明如何使用cookie来实现此目的?