Utilisation de Javascript pour ajouter un accès HTTP personnalisé et un téléchargement de fichier de déclenchement

Je voudrais commencer un simple téléchargement de fichiers via le navigateur, mais un jeton d'accès doit être transmis avec un en-tête HTTP personnalisé:

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

Comment puis-je injecter l'en tête Authorization: après l'URL du site? Je sais qu'il est possible de le faire en utilisant une chaîne de requête, mais je veux le faire en utilisant des en-têtes.

Je suis familier avec XMLHttpRequest, mais dans la mesure où je comprends, cela ne déclenche pas le téléchargement, il lit uniquement le contenu et le fichier que je veux télécharger est de quelques centaines de Mo au moins.

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

Cela ressemble à une tâche simple, mais je suis un codeur inexpérimenté, donc toute aide serait sympa. Merci.

Je pense que cela résout votre problème:

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

Réponse modifiée https://stackoverflow.com/a/10518190/2767026 pour répondre à vos besoins.

https://stackoverflow.com/a/12372670/1961561 pourrait être une solution pour votre problème.

 $.ajax({ url: "/test", headers: {"X-Test-Header": "test-value"} }); 

Il n'est pas possible d'ajouter un en-tête HTTP personnalisé lorsque vous téléchargez un fichier en cliquant sur un lien.

Cependant, dans votre cas d'utilisation, vous pouvez stocker le jeton dans un cookie, qui sera automatiquement ajouté à toutes les demandes du navigateur.