VUE 下载文件错误 Proxy error: Could not proxy request xxx from xxx to xxx. HPE_INVALID_HEADER_TOKEN

VUE 下载文件错误 Proxy error: Could not proxy request xxx from xxx to xxx. HPE_INVALID_HEADER_TOKEN

场景描述

VUE使用axios访问后端接口(返回文件流),获取到blob后,使用代码触发浏览器下载

问题描述

VUE在通过代理访问后端接口时,出现Proxy error: Could not proxy request xxx from xxx to xxx.
HPE_INVALID_HEADER_TOKEN。
VUE 下载文件错误 Proxy error: Could not proxy request xxx from xxx to xxx. HPE_INVALID_HEADER_TOKEN
控制台显示为后端返回500错误
VUE 下载文件错误 Proxy error: Could not proxy request xxx from xxx to xxx. HPE_INVALID_HEADER_TOKEN
后端表现为【java.io.IOException: 你的主机中的软件中止了一个已建立的连接。】
VUE 下载文件错误 Proxy error: Could not proxy request xxx from xxx to xxx. HPE_INVALID_HEADER_TOKEN

问题定位

VUE 下载文件错误 Proxy error: Could not proxy request xxx from xxx to xxx. HPE_INVALID_HEADER_TOKEN
HttpServletResponse的header中,设置的filename存在中文字符。注意,如果只是在控制台显示500异常,vue不抛ProxyError,并且后端不是【你的主机中的软件终止了一个已建立的链接】这样的异常,则不一定是中文字符的问题。

解决方案

对中文字符进行编码操作,这里只做URLEncoder.encode方式的编码
VUE 下载文件错误 Proxy error: Could not proxy request xxx from xxx to xxx. HPE_INVALID_HEADER_TOKEN