解决前后端分离项目后端设置响应头前端无法获取

问题描述

在开发前后端分离项目中出现后端设置响应头,前端一直无法获取等问题。
后端设置响应头代码如下

response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName,"UTF-8"));

在这里插入图片描述
在浏览器中我们是可以看到设置的响应头Content-Disposition属性,但是在前端接收到的响应信息中却看不到我们设置的Content-Disposition属性。
在这里插入图片描述

问题解决

原来在前后端分离的项目中除了需要定义响应头之外还需要暴露响应头,这样才能被前端获取。默认情况下,header只有六种响应头暴露给外部,如下:

Cache-Control
Content-Language
Content-Type
Expires
Last-Modified
Pragma

除了这六种之外,要想暴露其他响应头需要通过Access-Control-Expose-Headers来设置,具体代码如下

response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName,"UTF-8"));

设置成功之后可以看到如下图所示
在这里插入图片描述
此时,返回给前端的响应信息可以看到我们后端设置的响应头了
在这里插入图片描述
另外,我在后端设置为Content-Disposition,在前端我通过如下方式一直获取不到

let contentDisposition = res.headers['Content-Disposition'];

最后发现浏览器自动将大写Content-Disposition转成了小写content-disposition
改下即可成功获取。

let contentDisposition = res.headers['content-disposition'];

实现文件下载的前后端具体代码请看这篇文章《vue+elementui实现文件打包下载》

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前后端分离项目后端技术规范主要取决于具体的项目需求和技术栈选择。在前后端分离项目中,后端负责提供数据和业务逻辑,前端负责数据展示和用户交互。以下是一些建议的后端技术规范: 1. RESTful API:采用RESTful风格的API设计,使用HTTP协议的GET、POST、PUT、DELETE等请求方法来进行资源的增删改查操作,保证接口的一致性和可扩展性。 2. 数据库:选择合适的数据库技术,如MySQL、MongoDB、PostgreSQL等,根据项目的需求设计数据库表结构,并进行有效的索引设计和性能优化。 3. Web框架:选择适合后端开发的Web框架,如Spring Boot、Django、Express等,根据项目需求进行路由配置、中间件使用等。 4. 接口文档:编写清晰、详细的接口文档,包括接口的URL、参数、返回值、错误码等信息,方便前端开发人员理解和调用。 5. 安全性:对于涉及用户隐私的接口,需要进行安全性验证,如用户认证、权限控制等,防止未授权的用户访问敏感数据。 6. 性能优化:针对后端接口的性能进行优化,如合理使用缓存、数据库查询优化、异步处理等,提高系统的响应速度和并发能力。 7. 日志和监控:记录系统的运行日志,包括错误日志、访问日志等,通过监控工具对系统进行实时监控和性能分析,及时发现和解决问题。 8. 单元测试:编写单元测试用例,对后端接口进行测试,保证接口的正确性和可靠性。 请注意,以上只是一些常见的后端技术规范,具体的规范还需要根据项目需求和团队实际情况进行调整和补充。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [前后端分离后端分层](https://blog.csdn.net/weixin_38004638/article/details/98851043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值