本人在开发中碰到过这样的问题,本地测试没有问题,但是和前后端联调时出现跨域问题,可是后端代码中明明配置了放行所有请求,其他接口也没有报这种CORS跨域问题,偏偏这个传输文件接口报跨域问题,当时的代码是这样的:
response.reset();
httpResponse.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(newFileName, "UTF-8"));
httpResponse.setContentType("application/octet-stream");
httpResponse.setCharacterEncoding("utf-8");
OutputStream outputStream = httpResponse.getOutputStream();
while ((length = object.read(buf)) > 0) {
outputStream.write(buf, 0, length);
}
自己看了一会也没找到具体问题,之后查了一下,发现了问题,就是下面这个,把原本相应头里面允许跨域的头字段信息全部去掉了,因此造成了前端下载跨域问题,去掉之后就好了
response.reset();
或者添加这几个代码也可以解决
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");