Google Chrome点击按钮无法下载.war文件,Mozilla运行正常
WAR文件在Chrome中点击直接打开而非下载的解决方案
不同浏览器对未知类型资源的默认处理逻辑存在差异,Firefox默认对无明确预览规则的二进制资源触发下载,而Chrome会优先尝试解析预览,只要响应头没有明确指定下载规则,就会直接打开。可以通过以下两种方案修复:
前端修改方案
直接给下载链接增加download属性,强制浏览器触发下载行为,示例代码:<a href="/resource-path/your-app.war" download="your-app.war">下载WAR包</a>
注意:如果你的WAR文件存放在跨域域名下,需要后端配置
Access-Control-Expose-Headers: Content-Disposition响应头,否则download属性在跨域场景下会失效。
后端修改方案(更稳定,兼容所有浏览器)
只需要给WAR文件的下载接口配置两个固定响应头即可:
Content-Type: application/octet-stream:声明资源为二进制流,禁用浏览器的格式解析逻辑Content-Disposition: attachment; filename="自定义文件名.war":明确告知浏览器该资源需要作为附件下载,同时设置默认保存的文件名
如果是Spring Boot等Java后端,参考代码:
@GetMapping("/download/war") public void downloadWarFile(HttpServletResponse response) throws IOException { File warFile = new File("/opt/server/your-app.war"); response.setContentType("application/octet-stream"); response.setContentLength((int) warFile.length()); response.setHeader("Content-Disposition", "attachment; filename=\"your-app.war\""); // 输出文件流 Files.copy(warFile.toPath(), response.getOutputStream()); }
如果是用Nginx托管静态WAR文件,在对应location配置块中添加如下规则:
location ~* \.war$ { default_type application/octet-stream; add_header Content-Disposition "attachment; filename=$request_filename"; }

内容的提问来源于stack exchange,提问作者ankit
相关产品推荐
相关产品推荐

