J'ai un lien que je voudrais ajouter à mon application javascript (Marionette/Backbone) d'une seule page qui téléchargera un fichier Excel sur le disque local de l'utilisateur via la sauvegarde de fichier du navigateur. Une requête HTTP typique serait:
GET /api/v1/objects/?format=xls HTTP/1.1
Authorization: ApiKey username:apikey
Host: api.example.com
Connection: close
User-Agent: Paw 2.0.5 (Macintosh; Mac OS X 10.9.2; en_US)
Content-Length: 0
Ce qui donne la réponse typique suivante:
HTTP/1.1 200 OK
Server: gunicorn/18.0
Date: Tue, 06 May 2014 03:09:02 GMT
Connection: close
Transfer-Encoding: chunked
Vary: Accept
Content-Type: application/vnd.ms-Excel
Content-Disposition: attachment; filename="filename.xls"
Cache-Control: no-cache
<<CONTENT HERE>>>
Je voudrais le faire avec un élément d'ancrage simple conçu comme un bouton car cela invoquerait la machine de stockage de fichiers du navigateur. Quelque chose de similaire à:
<a href="/api/v1/objects/?format=xls" class="btn btn-primary pull-right">Download to Excel file</a>
Je ne suis pas sûr de savoir comment obtenir l'en-tête d'autorisation à passer lorsque vous le faites via un lien d'ancrage - ou peut-être que je ne pense pas et qu'il existe un meilleur moyen.
Mon backend est une application web Django utilisant Tastypie.
Cela n'est pas possible, car la seule façon d'ajouter des en-têtes HTTP utilise le XHR , mais XHR ne peut pas être utilisé pour télécharger des fichiers .
Vous pouvez cependant utiliser des cookies pour cela.