解决SpringBoot与Vue前后端分离下载文件跨域的问题_MrDJun的博客-程序员秘密

技术标签: Vue  

虽然是同一个域名,只要请求方与响应体的协议、域名、端口不一致都会存在跨域问题。

虽然后端配置了允许跨域访问、前端也关闭了vue的安全策略,但是在文件下载这里,仍然不能正常下载。

第一:在后端的响应体中设置允许跨域的头,如下:

private void genCode(HttpServletResponse response, byte[] data) throws IOException {
        response.reset();
        response.addHeader("Access-Control-Allow-Origin", "*");
        response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        response.setHeader("Content-Disposition", "attachment; filename=\"article.zip\"");
        response.addHeader("Content-Length", "" + data.length);
        response.setContentType("application/octet-stream; charset=UTF-8");
        org.apache.commons.io.IOUtils.write(data, response.getOutputStream());
    }

这种方式是输出流的形式,那么Vue是有专门接收流的方式的,而不能交给浏览器来自动处理流而实现下载文件(此坑)

第二:

这里给大家提供一个函数

    // 下载文件
    download(data) {
      let url = window.URL.createObjectURL(data)
      let link = document.createElement('a')
      link.style.display = 'none'
      link.href = url
      link.download = "article.zip" // 设置文件名
      document.body.appendChild(link)
      link.click()
      window.URL.revokeObjectURL(link.href);
    },

 函数使用正确的姿势:

this.$http.get("请求地址",{
        responseType: 'blob'
      }).then(res => {
       
    this.download(res.data) // 将接收的流传入即可
})

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41647999/article/details/109237203

智能推荐

Effective C++改善程序与设计的55个具体做法笔记_fengbingchun的博客-程序员秘密

Scott Meyers大师Effective三部曲:Effective C++、More Effective C++、Effective STL,这三本书出版已很多年,后来又出版了Effective Modern C++。More Effective C++的笔记见:https://blog.csdn.net/fengbingchun/article/details/102990753E...

利用python批量将RGB图片转换成灰度图片_求是书院萌新一枚的博客-程序员秘密

利用python批量将RGB图片转换成灰度图片前言一、代码实现二、RGB-Gray结果如下总结前言这里利用python批量处理了RGB图片转换成灰度图片,主要依靠cv2.cvtColor库函数。如果想用python批量调整图片的大小请看此文章,实测有用一、代码实现请根据需要自行更改文件地址即可。import os.pathimport globimport cv2import cupyfrom PIL import Imagedef convertpng(pngfile,outd

JS逆向核心流程_js代码逆向_我的眼里只有bug的博客-程序员秘密

JS逆向核心流程,从分析网络请求、定位加密参数生成处、扣代码、补环境

UVM实战 卷I学习笔记9——UVM中的sequence(5)_菜鸡想要飞的博客-程序员秘密

目录virtual sequence的使用*带双路输入输出端口的DUT*sequence之间的简单同步*sequence之间的复杂同步virtual sequence的使用*带双路输入输出端口的DUT下面新的DUT相当于在前面DUT的基础上增加了一组数据口,这组新的数据口与原先的数据口功能完全一样。新的数据端口增加后,由于这组新的数据端口与原先的一模一样,所以可以在test中再额外实例化一个my_env:class base_test extends uvm_test; my_env env0

基于Java+SpringBoot+Thymeleaf+Mysql在线购物网站商城系统设计实现_黄菊华老师的博客-程序员秘密

基于Java+SpringBoot+Thymeleaf+Mysql在线购物网站商城系统设计实现

python调用IP摄像头_韩韩的博客的博客-程序员秘密

利用RTSP+opencv就可以实现网络摄像头的调用rtsp是实时流传输协议,是基于TCP/IP协议体系中的一个应用层协议,可以控制声音或者影像的多媒体串流协议。但是不同品牌的摄像头有不同的RTSP地址。下面先简单列一下常用的摄像头的RSTP的地址。各种摄像头品牌的RTSP地址利用RTSP+opencv就可以实现网络摄像头的调用3S4XEMA-MTKABSAbsolutronACTIAcumenAirlink101AirLiveALinkingALLIEDEAsanteAsoniAviosysAVSA

随便推点

酉矩阵的介绍_半酉矩阵_漂流瓶jz的博客-程序员秘密

n阶复方阵U的n个列向量是U空间的一个标准正交基,则U是酉矩阵(Unitary Matrix)。显然酉矩阵是正交矩阵往复数域上的推广。若一n行n列的复数矩阵U满足:其中,U*为U的共轭转置,En为n阶单位矩阵,则U称为酉矩阵。

太完美!Python日志管理神器_七步编程的博客-程序员秘密

关注微信公众号【七步编程】,Python、AI、大数据原创文章第一时间推送!日志在开发过程中是一种被很多程序员不重视,但是却至关重要的一项功能。我认为在一个系统的整个生命周期里,日志系统虽然工作量不大,但是论重要性程度能够占10%-15%的比重,或者更高。优秀的日志管理,至少能够从3个方面提升系统:调试速度执行效率运维效率很少有人敢确保一个系统开发完成之后不会出现任何问题,因此,在一个完善的商业化系统设计过程中,日志管理都会被视为一个重要模块。日志输出、Kafka日志订阅、日志分析,.

Junit测试框架初探_匍匐-菜鸟的博客-程序员秘密

Junit是用于编写可复用测试集的简单框架,是基于xUnit的,xUnit是一套基于测试驱动开发的测试框架,包括PythonUnit,用于Python的测试,CppUnit用于C++的测试,以及药要学的Java的单元测试JUnit。其可以针对性的对程序进行测试,减少代码的漏洞。当然也可以使用Main方法进行测试,输出结果并不友好,而且需要程序员自己去判断错误的来源等。    其中我们可以从官网

OGG(oracle goldengate)实现oracle到oracle数据DDL同步_落俗zp的博客-程序员秘密

注:本篇文章是在已经配置过DML同步或者源端数据库已经开启归档、添加了附加日志等基础上记录的,如未设置,请参考另外一篇:https://blog.csdn.net/weixin_41229271/article/details/101196319然后再进行下面的步骤。源端在ogg安装目录下登陆数据库SQL> @marker_setup.sqlMarker setup scr...

Chatbots 中对话式交互系统的分析与应用_Go中国的博客-程序员秘密

洪强宁 / 爱因互动 CTO 前豆瓣首席架构师,TGO 北京分会成员。编程 30 余年,11 年互联网从业经验。16年的时候,我离开宜信出来创业,与原来豆瓣的首席科学家王守崑一起创立了爱因互动这家公司。爱因互动是做对话服务的,是一家 To B 的公司。我们服务的内容是用对话的形态来交付企业的价值。为了提高对话的效率、质量,我们采用了人工智能技术。在这个过程当中,我们会涉及到更加偏售前的方式,会做更

2021年美赛F题思路_2021美赛f题数据_一位安分的码农的博客-程序员秘密

美赛F题思路已经出来了,免积分下载,在此分享给大家https://download.csdn.net/download/weixin_44612221/15077296

推荐文章

热门文章

相关标签