Websphere Application Server 7 中的 HTTP 标头 Mime 类型
Posted
技术标签:
【中文标题】Websphere Application Server 7 中的 HTTP 标头 Mime 类型【英文标题】:HTTP Header Mime Type in Websphere Application Server 7 【发布时间】:2011-09-23 12:08:07 【问题描述】:我有一个 Spring Web 应用程序,用户可以在其中下载 PDF 和 Excel 文件。我为它们设置了 HTTP 标头:
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentType(MediaType.parseMediaType("application/vnd.ms-excel"));
responseHeaders.setContentLength(fileSize);
responseHeaders.set("Content-Disposition", "attachment");
responseHeaders.add("Content-Disposition", "filename=\"" + encodedFileName + '\"');
这在 Tomcat 上运行良好(HTTP 响应是 mime 类型的 application/vnd.ms-excel)。 但是在 Websphere 7 上,服务器总是返回内容类型:此请求的 text/html。
我已经在 web sphere 虚拟主机中注册了 excel 内容类型,但这并没有改变任何东西。
我错过了什么?
【问题讨论】:
【参考方案1】:您的语法不正确,您不能有多个 C-D 标头。像这样:
responseHeaders.set("Content-Disposition", "attachment; filename=\"" + encodedFileName + '\"');
此外,当 encodedFilenName 包含 ISO-8859-1 字符集之外的字符时,代码将无法正常工作。
(不知道这是否与您的问题有关)
【讨论】:
Julian Reschke:为什么 Content-Disposition"attachment;filename="helloWorld.xls"
不起作用。 (@参见 RFC2183 ietf.org/rfc/rfc2183.txt)? - 感谢您提供编码提示。 -- 但总的来说,它并没有解释为什么它适用于 Tomcat 而不适用于 WAS7
嗯,它应该可以工作(新的 RFC 是 6266,顺便说一句)。您可能想要检查 WAS7 在线上的内容(HTTP 跟踪、浏览器网络控制台等...)
@Julian Reschke:我已经做到了(WAS7 返回“text/html”):这就是我问这个问题的原因。
那么是否您尝试将其设置为单个标题字段?
@Julian Reschke:你可能忽略了我使用两种不同的方法set
和add
。这正是add
的用例。无论如何,我将只用一行来测试它。以上是关于Websphere Application Server 7 中的 HTTP 标头 Mime 类型的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse 远程调试 WebSphere Application Server (WAS)
Websphere Application Server 7 中的 HTTP 标头 Mime 类型
[高危]WebSphere Application Server XML外部实体注入漏洞
漏洞情报 | WebSphere Application Server 目录遍历漏洞(CVE-2021-20354)