Java 使用Struts2从服务器接收到重复的标头
我正在应用程序中使用Struts2。我需要下载excel文件(.xlsx和.xls格式)。这在IE中正常工作,但在Chrome中显示错误 “从服务器接收到重复的标头”Java 使用Struts2从服务器接收到重复的标头,java,http,struts2,http-headers,content-disposition,Java,Http,Struts2,Http Headers,Content Disposition,我正在应用程序中使用Struts2。我需要下载excel文件(.xlsx和.xls格式)。这在IE中正常工作,但在Chrome中显示错误 “从服务器接收到重复的标头” 我在文件名之前使用引号(“您可以设置contentDisposition,就像您在struts配置中设置其他头一样 附件;filename=“Export.xlsx”; 应用程序/vnd.ms-excel 文件输入流 1024 您还可以使用${}符号将其参数化,并在操作中使用相应的getter: 附件;filename=“${
我在文件名之前使用引号(“您可以设置
contentDisposition
,就像您在struts配置中设置其他头一样
附件;filename=“Export.xlsx”;
应用程序/vnd.ms-excel
文件输入流
1024
您还可以使用${}
符号将其参数化,并在操作中使用相应的getter:
附件;filename=“${filename}”;
公共字符串getFilename(){…}
该错误意味着头字段被设置了两次;您应该能够在HTTP跟踪中看到这一点。因此,您需要找出设置两次的原因。如果您使用的是流
结果,那么也可以使用它来设置内容处置头。@AleksandrM我使用了通过操作类的内容处置。这就是您所拥有的吗请让我试试?我无法找到你。你能详细解释一下吗?stream
result已经设置了此标题,你正在添加另一个标题,因此出现此错误。请阅读有关stream
result的文档。我尝试了此操作。但我在Chrome中仍然遇到相同的错误。显然,你需要删除response.setHeader(Content,“附件;filename='Export.xlsx';”;
操作的一部分确保您已正确重新部署,且未缓存任何内容谢谢Andrea。一旦我清除缓存,它将按预期工作。欢迎:)请记住接受答案