下载带有授权标题的锚链接

Eri*_*rik 19 html javascript http backbone.js tastypie

我有一个链接,我想添加到我的javascript(Marionette/Backbone)单页面应用程序,它将通过浏览器的文件保存将Excel文件下载到用户的本地驱动器.典型的HTTP请求是:

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
Run Code Online (Sandbox Code Playgroud)

这导致以下典型响应:

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>>>
Run Code Online (Sandbox Code Playgroud)

我想用一个简单的锚元素作为按钮来做这个,因为这将调用浏览器的文件存储机制.类似的东西:

<a href="/api/v1/objects/?format=xls" class="btn btn-primary pull-right">Download to Excel file</a>
Run Code Online (Sandbox Code Playgroud)

我不清楚如何通过锚链接来获取授权标头 - 或者我可能只是没想到并且有更好的方法.

我的后端是使用Tastypie的Django网络应用程序.

Art*_* B. 16

不是可能的,因为添加的HTTP标头的唯一方法是使用XHR,但是XHR不能用来下载文件.

但是,你可以使用cookie来做到这一点.

  1. 只需使用服务器返回的值设置cookie即可.
  2. 等到用户点击链接.
  3. 用户单击链接后使cookie无效.

  • 可以使用FileAPI:http://stackoverflow.com/a/24523253/3703604 (4认同)