后端使用response.reset()导致出现跨域问题

前言

今天联调文件下载的接口,由于自己用postman测试一直都没问题,但是在和前端联调的时候前端就会出现如下跨域的报错,但是项目是做了统一的跨域处理的,代码类似于下面:

java 复制代码
@ApiOperation("下载附件")
    @PostMapping(value = "/download")
    public void  downloadFile(@RequestBody List<Long> fileId) {
        ServletRequestAttributes servletRequestAttributes =  (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
        HttpServletResponse response = servletRequestAttributes.getResponse();
        FileBinary fileBinary=  fileReportApiClient.download(fileId);
        byte[] bytes = fileBinary.getData();
        try {
            // 清空response
            response.reset();
            response.setContentType("application/octet-stream;charset=UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(new Date().getTime() + ".zip", "utf-8"));
            OutputStream ouputStream = response.getOutputStream();
            ouputStream.write(bytes);
            ouputStream.flush();
            ouputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

解决方式

但是项目是做了统一的跨域处理的,后来通过查询资料,发现是response.reset();导致的,正常的respon会带下面的数据,但是.reset()以后会清掉,导致跨域的问题,解决方式,可以通过在reset下添加下列代码,或者将response.reset();删除即可解决。

java 复制代码
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
相关推荐
William_cl7 小时前
第 1 节:MVC + DataTable 百万数据秒加载 —— 企业级服务端分页实战
mvc·状态模式
灰色人生qwer8 小时前
python 中 BaseModel 在这里有什么用?
开发语言·python·状态模式
薛定猫AI1 天前
【深度解析】Qwen 3.6 vs Gemma 4:本地大模型时代,如何选对“日常开发模型”
人工智能·状态模式
guslegend2 天前
第9节:前端工程与一键启动
前端·大模型·状态模式·ai编程
yuzhiboyouye2 天前
VO一般java后端怎么转换成前端想要的数据
java·前端·状态模式
我叫张小白。2 天前
劳动力招聘管理系统:全栈实战(Vue3+FastAPI+WebSocket+Dify)
websocket·vue·毕业设计·状态模式·fastapi·dify·智能体
csdn小瓯2 天前
结构化输出实战:Pydantic Schema约束LLM生成JSON
json·状态模式
肖恩想要年薪百万3 天前
JSP中常用JSTL标签
java·开发语言·状态模式
测试_AI_一辰3 天前
AI时代,学东西的方式变了
人工智能·ai·自动化·状态模式·ai编程
北风朝向3 天前
Spring Boot 集成 Open WebUI 实现 AI 流式对话
人工智能·spring boot·状态模式