Kri*_*ris 17 html javascript forms header http
我有一个不寻常的要求.基本上我需要一种方法,以便当用户点击链接或按钮时,他们将收到PDF.这里棘手的部分是服务器根本不处理请求,除非与它一起发送自定义标头(否则它认为该人注销并将其发送到登录屏幕).
目前标题的工作方式无法改变,所以请不要纠缠于此; 它将来会改变,是一个我无法控制的内部应用程序.
我探讨的选项:
看来我此时唯一的选择基本上是:
这里有什么我想念的吗?我希望有人可以验证我的发现或指出我错过的东西,因为据我所知,我在这里没有什么可以做的.
编辑:这似乎很容易确认我在想什么:XMLHttpRequest在浏览器中打开PDF
Esa*_*ija 13
经测试可以在chrome中使用:
function toBinaryString(data) {
var ret = [];
var len = data.length;
var byte;
for (var i = 0; i < len; i++) {
byte=( data.charCodeAt(i) & 0xFF )>>> 0;
ret.push( String.fromCharCode(byte) );
}
return ret.join('');
}
var xhr = new XMLHttpRequest;
xhr.open( "GET", "/test.pdf" ); //I had test.pdf this on my local server
xhr.addEventListener( "load", function(){
var data = toBinaryString(this.responseText);
data = "data:application/pdf;base64,"+btoa(data);
document.location = data;
}, false);
xhr.setRequestHeader("magic", "header" );
xhr.overrideMimeType( "application/octet-stream; charset=x-user-defined;" );
xhr.send(null);
Run Code Online (Sandbox Code Playgroud)
您可以将application/pdf更改为application/octet-stream以获得下载提示.但是从chrome的读卡器上下载也很容易.
在Firefox中没有任何反应,我想这是因为我没有插件来处理application/pdf安装.更改为application/octet-stream将提示dl.
使用IE,我想你需要某种VBScript/ActiveX hackery
如果文件很大,使用数据uri可能会使浏览器崩溃,在这种情况下,您可以使用BlobBuilder和Object URL.
| 归档时间: |
|
| 查看次数: |
14749 次 |
| 最近记录: |