AngularJS + Web API-如何安全地下载excel文件而无需再次登录

杰森

我有一个使用AngularJS和.NET Web API构建的应用程序,该应用程序使用Http Basic身份验证来提高安全性。它们位于不同的子域中,例如:mydomain.com和api.mydomain.com

我对网页API“安全网址https://api.mydomain.com/downloadFile ”产生一个Excel文件,我需要下载客户端。我尝试使用HTML5 Blob对象通过angularjs下载文件,但在尝试打开文件时始终收到“文件损坏”错误消息。

我想出的解决方案是创建一个隐藏的iframe以下载文件

<iframe style="display:none;" ng-src="{{downloadFileUrl}}"></iframe>

并在控制器中设置$ scope.downloadFileUrl

$scope.downloadFile = function () {
    $scope.downloadFileUrl = $sce.trustAsResourceUrl('https://api.mydomain.com/downloadFile');
};

这行得通,但由于未从iframe发送HTTP'Authorization'标头作为请求的一部分,因此我被迫再次登录api。是否可以通过iframe的请求传递“授权”标头,或者通过其他任何方式从服务器安全下载文件而无需再次登录?

格本·兰帕特

我也使用iframe下载方法。似乎是跨浏览器支持的最可靠的下载方法。所以我同意您的方法。

我认为您不能传递标题,我也一直在寻找它。而且,除非我完全不知道这样做的方法(并非不可想象),否则我相信它是无法完成的。

我已经通过使用票解决了这个问题。方法如下:每当显示可下载的数据时,我都会根据要下载的文件的主键(在我的情况下为guid)在服务器上生成票证。此票证是一个由几个字符组成的简单随机字符串,并存储在某个位置(在我的情况下只是db)。到期时间为10分钟。这意味着,单击带有查询字符串中的票证的下载URL将自动登录并开始下载。该票证在绝对到期,用户明确注销或成功完成下载后过期。

像这样:https : //api.mydomain.com/downloadFile/ {fileId}?ticket = fk37cltps7

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS + Web API-如何安全地下载excel文件而无需再次登录

来自分类Dev

如何从AngularJS网站安全地连接到Web API

来自分类Dev

Web Api和AngularJs

来自分类Dev

如何从AngularJS中的Web API处理PDF文件?

来自分类Dev

AngularJS的Web API异步方法

来自分类Dev

从Web API提取AngularJS数据

来自分类Dev

如何从angularjs在Web API中传递多种类型的参数?

来自分类Dev

如何在AngularJS或jQuery中编写Web API调用

来自分类Dev

如何使用由angularJS托管的Web API服务

来自分类Dev

如何使用angularjs从Web api控制器返回数据?

来自分类Dev

使用AngularJS从Asp.net Web API 2下载Excel

来自分类常见问题

使用AngularJS从ASP.NET Web API方法下载文件

来自分类Dev

AngularJS with .NET Web API: Authentication with AD

来自分类Dev

为Web API URL配置Angularjs路由

来自分类Dev

Web Api中的AngularJS插入为null

来自分类Dev

从angularjs消费REST Web Api服务

来自分类Dev

AngularJS:使用Wikipedia API的Web服务

来自分类Dev

为Web API URL配置Angularjs路由

来自分类Dev

使用closedxml从web api下载excel文件

来自分类Dev

调用WEB API下载excel文件

来自分类Dev

使用AngularJS和ASP.NET Web API上传/下载字节数组

来自分类Dev

不允许使用WEB API AngularJS Google+登录CORS

来自分类Dev

使用Web API进行基本angularjs项目的基本登录和身份验证检查

来自分类Dev

如何安全地测试需要外部Web API的代码

来自分类Dev

Google Web登录到Angularjs

来自分类Dev

使用(AngularJS 2)和ASP.net MVC Web API上传文件

来自分类Dev

如何在IIS的虚拟目录中使用AngularJs托管Web API

来自分类Dev

如何使用angularjs将具有其他参数的数组发送到Web API

来自分类Dev

如何在IIS的虚拟目录中使用AngularJs托管Web API

Related 相关文章

热门标签

归档