使用JavaScript添加自定义HTTP标头

Sri*_*vas 41 javascript http-headers

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

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

此要求仅适用于IE6或7.

Han*_*Gay 40

如果你正在使用XHR,那么setRequestHeader应该工作,例如

xhr.setRequestHeader('custom-header', 'value');
Run Code Online (Sandbox Code Playgroud)

PS你应该使用Hijax修改你的锚的行为,以便它可以工作,如果由于某种原因AJAX不适合你的客户端(如页面上其他地方的破坏脚本).


Meh*_*ari 12

我认为最简单的方法是使用查询字符串而不是HTTP标头.

  • @JamesReategui这是不正确的:URL在传输过程中被加密.潜在的安全问题是端点(日志或书签或历史记录中)中的秘密URL的持久性,但不会传输. (5认同)
  • 如果您使用SSL,并且您发送的信息是敏感的,则不应将其放在查询字符串中,因为它不会被加密。仅http消息正文被加密,因此标头中的安全性 (2认同)

Ant*_*nes 12

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

使用此"GET"请求将下载资源.然后,技巧是以预期的方式访问资源.表面上你应该能够允许GET响应在短时间内缓存,因此导航到新URL或使用src url创建IMG标记应该使用前一个"GET"的缓存响应.然而,这很可能会失败,特别是在IE中,对于缓存而言,这可能是一个法律本身.

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

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