使用Javascript添加自定义http标头和触发文件下载

use*_*553 10 javascript download http-headers

我想通过浏览器开始简单的文件下载,但是必须使用自定义HTTP标头传递访问令牌:

GET https://my.site.com/some/file
Authorization: access_token
Run Code Online (Sandbox Code Playgroud)

如何在网站URL后面注入Authorization:标头?我知道使用查询字符串可以做到这一点,但我想用标题来做.

我熟悉XMLHttpRequest,但据我所知,它不会触发下载,它只读取内容,我想下载的文件至少是几百MB.

xhr.setRequestHeader('Authorization', 'access_token');
Run Code Online (Sandbox Code Playgroud)

这看起来像一个简单的任务,但我是没有经验的编码器,所以任何帮助都会很好.谢谢.

Wil*_*ckl 5

我认为这解决了你的问题:

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", "https://my.site.com/some/file" );     

xhr.addEventListener( "load", function(){
    var data = toBinaryString(this.responseText);
    data = "data:application/text;base64,"+btoa(data);
    document.location = data;
}, false);

xhr.setRequestHeader("Authorization", "access_token" );
xhr.overrideMimeType( "application/octet-stream; charset=x-user-defined;" );
xhr.send(null);
Run Code Online (Sandbox Code Playgroud)

修改后的答案/sf/answers/736273331/以满足您的需求.