【问题标题】:HTTP Header Mime Type in Websphere Application Server 7Websphere Application Server 7 中的 HTTP 标头 Mime 类型
【发布时间】: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 内容类型,但这并没有改变任何东西。

我错过了什么?

【问题讨论】:

    标签: java spring http websphere mime


    【解决方案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 的用例。无论如何,我将只用一行来测试它。
    最近更新 更多