gpt4 book ai didi

oauth - 使用OAuth2下载Javascript中的文件

转载 作者:行者123 更新时间:2023-12-04 15:57:11 28 4
gpt4 key购买 nike

我正在用客户端的Javascript + AngularJS和服务器端的Spring MVC + Spring Security OAuth2开发单页。 Spring MVC充当页面中所有AJAX请求的REST Controller 。

为了进行授权,脚本会在每个AJAX请求中发送“Authorization:Bearer ...” header 。当请求少量数据时,这可以很好地工作。
要下载XML文件(导出用户数据),我使用OAuth2 header 通过AJAX下载了它们,并创建了一个Blob以允许将文件保存在浏览器中:

var blob = new Blob([data.data], {'type': "text/xml"});
var a = document.createElement("a");
a.href = window.URL.createObjectURL(blob);
a.download = "downloaded-file-" + new Date().toISOString() + ".xml";
a.click();

这种方法有效,但是
  • 使用RAM,因此不适合大文件下载
  • 没有显示正确的进度/加载栏

  • 因此,问题是:是否有更好的方法来下载具有OAuth2授权的文件?执行重定向时,Javascript不允许指定 header ,OAuth不允许通过URL参数指定授权 token 。我在想
  • 添加了特殊的Spring MVC Controller 方法来提供URL,该URL从URL编码的 token 重定向到 header 编码的HTTP请求
  • 添加了一个额外的Spring Security过滤器,以允许从URL参数
  • 中提取 token
  • 改为基于Cookie的授权,而不是OAuth2

  • 如果有人遇到类似问题,能否请您分享解决此问题的方法?

    最佳答案

    如果我是你,我会带 cookies -它消除了所有麻烦。我最近写了一些博客来展示它是多么容易(例如https://spring.io/blog/2015/01/20/the-resource-server-angular-js-and-spring-security-part-iii)。人们太卡在“无状态”应用程序上了。

    关于oauth - 使用OAuth2下载Javascript中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28384470/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com