下载带有 HTTP“授权”标头集的文件

Posted

技术标签:

【中文标题】下载带有 HTTP“授权”标头集的文件【英文标题】:Download a file with HTTP "Authorization" header set 【发布时间】:2013-02-24 07:18:27 【问题描述】:

我正在向我的 RESTful API(使用 Rails 制作)中的资源提供文件上传。当您GET /resource/123/attachment 时,具有相应 MIME 类型的文件将发送到浏览器。 (可以是任何东西......图像、PDF、文本文件等等)

如果有任何兴趣,可以这样做:

send_file(contract.attachment.path, :filename => contract.attachment.original_filename)    

但由于上传的文件是基于用户且保密的,因此需要使用令牌设置Authorization HTTP 标头。

所以我考虑使用jQuery.get 来设置HTTP 标头。但是我该如何处理来自服务器的响应呢?它应该表现得像您单击了一个普通链接(只是在请求之前设置了一个 HTTP 标头)

【问题讨论】:

您可以接受基于令牌的解决方案(而不是 http 标头)吗?我的意思是 GET /resource/123/attachment?token=111222333444 【参考方案1】:

如果您可以控制服务器输出并且图像不是太大,您可以使用 base64 图像并执行以下操作:

$.ajax( 
  url : '/resource/123/attachment', 
  processData : false,
).done(function(data)
  $("#YOUR_IMG_ID").attr("src", "data:image/png;base64,"+data);
);

另一种选择是您可以编写备用身份验证,以允许您在查询字符串中添加一些内容,例如 。例如,您可以查看 oAuth 或其他东西来签署请求。

【讨论】:

以上是关于下载带有 HTTP“授权”标头集的文件的主要内容,如果未能解决你的问题,请参考以下文章

带有授权令牌标头的角度 $http GET 请求

带有可选 Base64 编码的 REST API 标头

CORS,防止带有授权标头的请求预检

重定向的瓶子设置授权标头

Playframework 1.x 带有协商标头的未经授权的响应

如何在请求标头并获得 HTTP 错误 403 时使用 youtube-dl 下载 MPEG Dash(mpd 文件)