2009-02-24 80 views
39

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

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

此要求仅适用于IE6或7。

+2

我想这样做,例如,如果你想从GET请求中需要身份验证头的服务中获取图像。 – 2013-02-14 15:54:57

回答

40

如果您使用的是XHR,那么setRequestHeader应该可以工作,例如,

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

P.S.您应该使用Hijax来修改锚点的行为,以便在出于某种原因AJAX不适用于您的客户端(例如页面上其他地方的破坏脚本)时使用。

12

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

+1

+1。即使使用XMLHttpRequest,设置标题也不完全可靠。去参数。 – bobince 2009-02-24 14:23:29

12

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

将此与“GET”请求一起使用将下载资源。接下来的技巧是以预期的方式访问资源。表面上你应该可以让GET响应在短时间内缓存,因此导航到一个新的URL或创建一个带有src url的IMG标签应该使用来自前一个“GET”的缓存响应。但是,这很可能会失败,特别是在IE中,对于缓存而言,它本身可能是一个法律本身。

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

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

0

如前所述,最简单的方法是使用查询字符串。

但是,如果你不能,由于安全原因,你应该考虑使用cookie。