前端下载文件时无法获取到header['Content-Disposition']
我们在做文件下载的功能时,往往需要后端将文件名称返回给前端,前端获取文件名称并从浏览器上下载文件。
一般情况下,后台会将文件名称加在请求的响应头的Content-Disposition中,前端只需要去获取该字段即可。
但是由于浏览器的限制,前端只能在network中看到Content-Disposition字段但是代码中无法获取。
此时,就需要后端将其字段暴露出来。前端才能成功的拿到该字段。
后端设置如下:
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); //在此处开放Content-Disposition权限,前端代码才能获取到