Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下载带有授权标头的锚链接_Javascript_Html_Http_Backbone.js_Tastypie - Fatal编程技术网

Javascript 下载带有授权标头的锚链接

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

我有一个链接,我想添加到我的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 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来实现这一点

  • 只需使用服务器返回的值设置cookie
  • 等待用户单击链接
  • 在用户单击链接后使cookie无效

  • 不是在头中传递令牌,而是将其作为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。