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:你可能忽略了我使用两种不同的方法setadd。这正是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)

WebSphere Studio Application Developer 5.0 优化设置

WebSphere Application Server 中使用manageprofiles.sh 创建概要文件的步骤