Jquery 如何在将请求头加载到iframe之前设置请求头

Jquery 如何在将请求头加载到iframe之前设置请求头,jquery,iframe,http-headers,Jquery,Iframe,Http Headers,我需要下载一个文件,该文件的“内容处置”头被服务器设置为“附件”。我正在使用jQuery.ajax进行GET,并在成功时将hiddeniframesrc设置为url,这为我提供了一个文件下载的弹出窗口。它在所有浏览器中都可以正常工作。 现在我想更改一个自定义请求头,以便在获取和下载之前对文件进行加密。我为它使用了jQuery.ajaxpre-request回调函数beforeSend 我可以在firebug中看到我的加密文件,但我的iframe仍然显示未加密的文件供下载。检查后,我可以说,ifr

我需要下载一个文件,该文件的“内容处置”头被服务器设置为“
附件
”。我正在使用
jQuery.ajax
进行
GET
,并在成功时将hidden
iframe
src
设置为
url
,这为我提供了一个文件下载的弹出窗口。它在所有浏览器中都可以正常工作。 现在我想更改一个自定义请求头,以便在获取和下载之前对文件进行加密。我为它使用了
jQuery.ajax
pre-request回调函数
beforeSend

我可以在firebug中看到我的加密文件,但我的
iframe
仍然显示未加密的文件供下载。检查后,我可以说,
iframe
请求一个新的GET

代码

$.ajax({
url: "/tutorial.text",
beforeSend: function(xhr) {  xhr.setRequestHeader("PASSWORD_HEADER", userPwd);  },
success: function() {   $("#Hidden_iframe").attr("src", this.url);  }                                   
});
这在InternetExplorer上运行良好。如何强制iframe使用可用资源而不是请求新的GET。
或者我如何在iframe中设置RequestHeader,或者我真的需要一个
jQuery。对于这个任务,Ajax
有没有最好的方法可以直接从服务器下载设置为附件文件的内容处置头。

这个解决方案不使用iframe或表单。它在支持CORS的资源上使用带有自定义头的XHR(本例中仅使用来自internet的随机svg)。这种方法的关键区别是
xhr.responseType='arraybuffer'
和带有
blob
href和
下载属性的链接:

//一些初始数据
var url='//enable cors.org/img/cloud download.svg';
var密码='123456';
//将url下载到arrayBuffer中
功能下载(url、密码、cb){
var xhr=new XMLHttpRequest();
xhr.open('GET',url,true);
xhr.responseType='arraybuffer';
//setRequestHeader('PASSWORD_HEADER',PASSWORD);
xhr.onload=函数(){
cb(xhr.响应);
};
xhr.send(空);
}
//接收url的二进制内容
//创建blob链接并单击它
下载(url、密码、函数(arrayBuffer){
var file=新文件([arrayBuffer],“某些文件名”);
var a=document.createElement('a');
a、 setAttribute('href',window.URL.createObjectURL(文件));
a、 setAttribute('download','download.ext的文件名');
//在firefox中,`a.click()`仅当`a`元素在DOM中时有效,因此。。。
document.documentElement.appendChild(a);
a、 单击();
console.log('done');

});你曾经得到过这个问题的答案吗?我正在尝试做类似的事情。。。通过ajax调用下载文件,但下载需要身份验证,而且是跨域的。。。。