本人在開發中碰到過這樣的問題,本地測試沒有問題,但是和前后端聯調時出現跨域問題,可是后端代碼中明明配置了放行所有請求,其他接口也沒有報這種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");