Angularjs 安全RESTful API-如何下载文件
我正在用Angularjs 安全RESTful API-如何下载文件,angularjs,ajax,file,download,restful-architecture,Angularjs,Ajax,File,Download,Restful Architecture,我正在用Spring Boot开发一个RESTful API,并用oAuth2.0(通过Spring Security)和我的前端AngularJS进行保护 我需要下载一个文件,我读到的每一篇文章都说(我理解)我应该使用window.open('urlToTheFileEndpoint') 但是这样做的话,我不能添加安全头(就像我的其他ajax请求一样),所以API不允许完成我的请求 有办法解决这个问题吗?或者我应该使此文件端点不安全吗?此线程可能有用: 它还提到了这篇文章: 以下是一个片段
Spring Boot
开发一个RESTful API,并用oAuth2.0
(通过Spring Security
)和我的前端AngularJS进行保护
我需要下载一个文件,我读到的每一篇文章都说(我理解)我应该使用window.open('urlToTheFileEndpoint')代码>
但是这样做的话,我不能添加安全头(就像我的其他ajax请求一样),所以API不允许完成我的请求
有办法解决这个问题吗?或者我应该使此文件端点不安全吗?此线程可能有用:
它还提到了这篇文章:
以下是一个片段:
var id = 123;
var req = ic.ajax.raw({
type: 'GET',
url: '/api/dowloads/'+id,
beforeSend: function (request) {
request.setRequestHeader('token', 'token for '+id);
},
processData: false
});
这就是我解决问题的方法:
当用户单击“下载”时,我将对API服务器进行ajax调用,它不会返回文件,而是返回一个临时的uuid
。服务器将创建一个名为uuid.route
(即:abc-123.route)的临时文件,其中包含指向该文件的实际路径(即:/mnt/data/files/excel\u template.xlsx)
然后,当ajax调用返回uuid时,我可以调用window.open('getFile?uuid=abc-123')
。这将是一个不安全的端点。但一旦下载或在过期时间内,此路由文件将被删除,因此无法再次调用
这样,它支持任何文件,任何大小
这是我最好的方法。您的其他端点是否在末尾有类似的方法?access_token=3525d0e4-d881-49e7-9f91-bcfd18259109
使用oAuth2.0的Spring安全性不能以这种方式工作。通过第二个链接和与朋友的一些头脑风暴,我将实现解决方案。谢谢