11

ブラウザから簡単なファイルのダウンロードを開始したいのですが、カスタム HTTP ヘッダーを使用してアクセス トークンを渡す必要があります。

GET https://my.site.com/some/file
Authorization: access_token

サイト URL の後にAuthorization:ヘッダーを挿入するにはどうすればよいですか? クエリ文字列を使用してそれを実行できることはわかっていますが、ヘッダーを使用して実行したいと考えています。

私は XMLHttpRequest に精通していますが、ダウンロードをトリガーしないことを理解している限り、コンテンツを読み取るだけで、ダウンロードしたいファイルは少なくとも数百 MB です。

xhr.setRequestHeader('Authorization', 'access_token');

これは簡単な作業のように見えますが、私は経験の浅いコーダーなので、どんな助けでもいいでしょう. ありがとう。

4

3 に答える 3

7

これで問題が解決すると思います:

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);

ニーズに合わせて回答https://stackoverflow.com/a/10518190/2767026を変更しました。

于 2015-01-08T18:27:19.037 に答える
0

https://stackoverflow.com/a/12372670/1961561が問題の解決策になる可能性があります。

$.ajax({
  url: "/test",
  headers: {"X-Test-Header": "test-value"}
});
于 2013-05-16T16:32:00.083 に答える
0

リンクをクリックしてファイルをダウンロードするときに、カスタム http ヘッダーを追加することはできません。

ただし、ユースケースでは、すべてのブラウザー要求に自動的に追加される Cookie にトークンを保存する場合があります。

于 2015-03-09T16:18:40.793 に答える