在前后端分离项目中,前端项目获取不到后端项目添加的请求头信息

news/2024/7/10 0:26:26 标签: vue, download

前端获取不到后端添加的请求头信息

  • 问题场景
  • 发现问题
  • 解决问题

问题场景

在前后端分离项目中 , 后端添加请求头信息,头存放文件下载名称以及日期等信息,在前端执行下载事件时,发现封装Download.js报错,原因在于头content-disposition获取失败。

发现问题

后端设置请求头信息:

response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");

在这里插入图片描述

前端下载事件
                <a-button icon="export" :loading="exporting" @click="() => {
                    this.exporting = true;
                    Download(this.axios.get(this.$Api.*.*.exportCostFinance, {
                        responseType: 'arraybuffer',
                        params: {
                            company: this.form.company === 0 ? 0 : this.form.company || -1,
                            department: this.form.department || 0,
                            branchOffice: this.form.branchOffice || 0,
                            startMonth: this.form.startMonth && this.form.startMonth.format('YYYY/MM/01') || '',
                            endMonth: this.form.endMonth && this.form.endMonth.endOf('month').format('YYYY/MM/DD') || '',
                        }
                    })).finally(() => this.exporting = false);
                }">导出</a-button>
封装Download.js
function Download(request) {
    return new Promise((resolve, reject) => {
        request.then(res => {
            console.log(res)
            let filename = res.headers['content-disposition'].replace('attachment;filename=', '');
            let conentType = res.headers['content-type'];
            const blob = new Blob([res.data], {type: conentType});
            if (typeof window.navigator.msSaveBlob !== 'undefined') {
                // 兼容IE,window.navigator.msSaveBlob:以本地方式保存文件
                window.navigator.msSaveBlob(blob, decodeURI(filename))
            } else {
                // 创建新的URL并指向File对象或者Blob对象的地址
                const blobURL = window.URL.createObjectURL(blob)
                // 创建a标签,用于跳转至下载链接
                const tempLink = document.createElement('a')
                tempLink.style.display = 'none'
                tempLink.href = blobURL
                tempLink.setAttribute('download', decodeURI(filename))
                // 兼容:某些浏览器不支持HTML5的download属性
                if (typeof tempLink.download === 'undefined') {
                    tempLink.setAttribute('target', '_blank')
                }
                // 挂载a标签
                document.body.appendChild(tempLink)
                tempLink.click()
                document.body.removeChild(tempLink)
                // 释放blob URL地址
                window.URL.revokeObjectURL(blobURL)
            }
            resolve(res);
        }).catch(res => {
            reject(res);
        });
    });
}

export {
    Download
}
点击下载事件,content-disposition头信息实际上没有,Download.js报错,下载失败。

在这里插入图片描述

解决问题

 response.addHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
 
 response.setHeader("Access-Control-Expose-Headers","Content-Disposition");

在这里插入图片描述

重启项目,再次点击下载事件,下载成功。

在这里插入图片描述


http://www.niftyadmin.cn/n/876659.html

相关文章

项目打jar包保留参数名及可执行项目打jar包指定入口类和第三方依赖等

1. 项目打jar包保留参数名(jdk8) JDK8之后代码编译就可以保留参数名了,不再显示为arg0,arg1...,但JDK8编译默认还是不保留参数名的,需要手动开启; 那么应该如何打jar包保留参数名呢? (1) 命令行编译某个java文件到class: 不保留参数名: javac Test.java 保留参数名: jav…

基于Docker安装FastDFS

基于Docker安装FastDFS拉取镜像创建tracker容器创建storage容器执行上传测试FastDfs搭配Nginx拉取镜像 docker pull season/fastdfs创建tracker容器 跟踪服务器&#xff0c;起到调度的作用 docker run -id --name trakcer -p 22122:22122 -v /usr/local/docker/fastdfs/tra…

Python-迭代器与生成器

目录 迭代器与生成器迭代器生成器yield 和 yield from 迭代器与生成器 迭代器 在 Python 中&#xff0c;迭代器和可迭代对象是两个相关但不同的概念。它们都与迭代&#xff08;遍历&#xff09;数据相关&#xff0c;但在实现和使用上有所不同。 可迭代对象&#xff08;Itera…

设置centos7.3的YUM源为国内阿里云源

CentOS系统更换软件安装源 第一步&#xff1a;备份你的原镜像文件&#xff0c;以免出错后可以恢复。 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 第二步&#xff1a;下载新的CentOS-Base.repo 到/etc/yum.repos.d/ wget -O /etc/yum.r…

base64解码转成图片并上传

在Controller中 ResponseBodyRequestMapping(value "/avatarUploadByBase64.json", method RequestMethod.POST)ApiOperation(value "头像上传", notes "头像上传", position 5)public ResponseModel<FileUploadBean> avatarUploadBy…

分布式文件系统之FastDFS

分布式文件系统之FastDFS一、FastDFS概述二、文件上传及下载的流程文件上传流程文件下载流程三、安装FastDFS四、FastDFS的入门使用引入依赖配置tracker.conf文件封装UploadUtil类执行测试五、Spring环境中的使用引入依赖springmvc.xml配置文件解析器配置sysconfig.properties文…

Solr8.6.3安装与配置

Solr8.6.3安装与配置一、Solr概述二、搭建solr服务器&#xff08;Tomcat&#xff09;1.下载2.Tomcat和Solr整合3.添加依赖与配置4.创建工作空间5.指定solr工作空间6.创建solr索引库7.消除警告8.启动Tomcat三、管理界面介绍1.Dashboard2.Logging3.Core Admin4.java properties5.…

多张图片上传js

1.WEB项目&#xff1a; 前端页面及js: <body><div class"mt10 pb30"><div class"col-xs-2"><span class"" >内容</span></div><div class"col-xs-10"><div id"contentShow"&…