javascript - Descargar enlace de anclaje con encabezado de autorización
html http (1)
Tengo un enlace que me gustaría agregar a la aplicación de una sola página de javascript (Marionette / Backbone) que descargará un archivo de Excel en el disco local del usuario a través del archivo guardado del navegador. Una solicitud HTTP típica sería:
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
Lo que resulta en la siguiente respuesta típica:
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>>>
Me gustaría hacer esto con un elemento de anclaje simple con el estilo de un botón, ya que esto invocaría la maquinaria de almacenamiento de archivos del navegador. Algo similar a:
<a href="/api/v1/objects/?format=xls" class="btn btn-primary pull-right">Download to Excel file</a>
No tengo claro cómo puedo pasar el encabezado de autorización al hacer esto a través de un enlace de anclaje, o tal vez no estoy pensando y hay una mejor manera.
Mi backend es una aplicación web de Django que usa Tastypie.
Esto no es posible, porque la única forma de agregar encabezados HTTP es usar XHR , pero XHR no se puede usar para descargar archivos .
Sin embargo, podrías usar cookies para hacer eso.
- Simplemente configure la cookie, con un valor devuelto desde el servidor.
- Espera a que el usuario haga clic en el enlace.
- Invalide la cookie después de que el usuario haya hecho clic en el enlace.