Javascript 下载带有授权标头的锚链接
我有一个链接,我想添加到我的javascript(木偶/主干)单页应用程序中,该应用程序将通过浏览器的文件保存将Excel文件下载到用户的本地驱动器。典型的HTTP请求是:Javascript 下载带有授权标头的锚链接,javascript,html,http,backbone.js,tastypie,Javascript,Html,Http,Backbone.js,Tastypie,我有一个链接,我想添加到我的javascript(木偶/主干)单页应用程序中,该应用程序将通过浏览器的文件保存将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 1
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
这将导致以下典型响应:
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>>>
HTTP/1.1200正常
服务器:gunicorn/18.0
日期:2014年5月6日星期二03:09:02 GMT
连接:关闭
传输编码:分块
更改:接受
内容类型:application/vnd.ms-excel
内容处置:附件;filename=“filename.xls”
缓存控制:没有缓存
>
我想使用一个简单的锚元素作为按钮来实现这一点,因为这将调用浏览器的文件存储机制。类似于:
<a href="/api/v1/objects/?format=xls" class="btn btn-primary pull-right">Download to Excel file</a>
我不清楚在通过锚链接执行此操作时如何传递授权头——或者我只是没有思考,还有更好的方法
我的后端是一个使用Tastypie的Django web应用程序。这不可能,因为,但是 不过,您可以使用cookies来实现这一点
不是在头中传递令牌,而是将其作为url参数传递
<a href="/api/download/answers/{{token}}/{{survey._id}}" download="answers.csv" >
</a>
我怀疑情况就是这样。只是想确定一下。我想我会采用类似于你所建议的某种会话cookie安排。谢谢设置cookie在点击链接时下载文件有什么用。@AshokGurram不知道我在想什么或我的意思。可能是我建议重构服务器代码以使用cookie,而不是无效的usename和API密钥组合,这样将来的请求就不会有cookie,但我不确定。也许在翻译过程中丢失了一些东西。无论如何,正如罗伯特提到的,有一个更好的解决方案。谢谢你的回复。我在浏览器中有5个cookie,但在点击api时,只有3个cookie被发送到后端,剩下的2个cookie丢失。有什么想法吗?我已签入标头,它正在发送5个Cookie,但在签入后端java时,仅存在3个Cookie。@AshokGurram如果您已检查浏览器中的开发人员工具,确认Cookie是在您期望的请求中发送的,那么这确实是服务器问题。Java服务器生态系统非常广泛,您必须更具体,但即使如此,我也不确定我是否能回答这个问题。确保您在服务器端检查来自正确请求的cookie。