sunshine6

  在前后端分离的项目中涉及跨域问题,通常都会使用token进行验证。

  最近在前后端分离的项目中在一个问题上搞了很久,就是以前下载附件或者导出数据为文件的时候,在以前的那些项目前端可以直接用 window.location.href=\'后端url\',window.open(url)或者其他的方式,但是在前后端分离中这种方式不能把token也一起传到后端进行请求,导致权限不够访问不了后端。

  最后在多方面的尝试下,也和同事一起讨论,最后这么解决(直接附代码):

 1  /**
 2      * 导出用户列表
 3      */
 4     private exportUsers(){
 5         this.http.doPost({
 6             url: \'system/sysmanager/user/exportUsers\', 
 7             responseType:ResponseContentType.Blob,  
 8             body:this.form,  //传入后端的表单数据
 9             success: (req, res) => {
10                 var blob = new Blob([res.json()]); //创建一个blob对象
11                 var a = document.createElement(\'a\'); //创建一个<a></a>标签
12                 a.href = URL.createObjectURL(blob); // response is a blob
13                 a.download = "用户列表.xlsx";  //文件名称
14                 a.style.display = \'none\';
15                 document.body.appendChild(a);
16                 a.click();
17                 a.remove();
18             }
19         });
20    }

开始以为后端代码需要更改,其实后端代码不需要更改,输出的是输出流、或者字节数组前端都可以进行转换。

这个博客有点简短,如果有什么意见或者问题欢迎大家指教。

 

分类:

技术点:

相关文章:

  • 2021-09-27
  • 2021-11-01
  • 2021-11-01
  • 2021-08-08
  • 2021-05-02
  • 2019-03-13
  • 2021-07-19
  • 2021-05-27
猜你喜欢
  • 2019-09-06
  • 2021-12-27
  • 2021-07-12
  • 2021-08-06
  • 2021-11-12
  • 2021-08-15
  • 2021-04-11
相关资源
相似解决方案