【问题标题】:Content type issue in Wildfly 10Wildfly 10 中的内容类型问题
【发布时间】:2018-03-01 10:57:55
【问题描述】:

我在 Wildfly 10 上有一个 Web 应用程序 并且在 Web 应用程序目录中,我放置了一个 zip 文件,当用户单击超链接时我想下载该文件。 在我的 UI 上

片段

<div class="tyDiv" onclick="window.open('request.getContextPath() + "/downloads/Installer.exe")%>','_self')">
</div>

它会创建正确的网址,例如

"http://192.168.2.123:8080/comp/downloads/Installer.exe"


Content-Type:text/html;charset=UTF-8

这在 JBoss6 中按预期工作。它下载 exe 文件,但在 Wildfly 中它会在屏幕上显示所有垃圾字符,因为它的内容类型是 text/html

我尝试在standalone-full.xml 中设置mime 类型,但没有成功。

 <mime-mappings>
    <mime-mapping name="css" value="text/css"/>
    <mime-mapping name="exe" value="application/octet-stream"/>
 </mime-mappings>

【问题讨论】:

  • 无法在原版 Wildfly-10.0.0 中重现此行为。我的步骤顺序是cd deployments; mkdir foo.war; echo bar &gt; foo.war/bar.exe, curl -v http://localhost:8080/foo/bar.exe,结果Content-Typeapplication/octet-stream。一定有别的东西。检查web.xml中是否没有自定义mime-mapping
  • 没有。没有 mime-mapping 而是我尝试将其添加到 web.xml 但它没有工作,
  • 我建议你在 vanilla Wildfly 安装上尝试我的方法。然后尝试将工件逐个添加到您的项目中,以查看何时再次出错。

标签: wildfly mime-types wildfly-8 wildfly-10


【解决方案1】:

undertow.io 的文档展示了如何手动设置每个响应的 MIME 类型,例如。 exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/octet-stream");,而具有 MIME 类型映射的文件可能称为 web.xml(确保引用了正确的文件)。除此之外,我可以想象 servlet-filter 可能未按应有的方式配置 - 并且它将请求分派到不应结束的位置(已找到 https://stackoverflow.com/tags/servlet-filters/info)。虽然这里的这个答案甚至显示了如何在运行时添加 MIME 类型:https://stackoverflow.com/a/38021097/549372(通常应该在将二进制流写入输出时提供application/octet-stream - 这意味着它也可能是错误输入流的结果)。

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2016-09-16
    • 2016-06-15
    • 2014-02-26
    相关资源
    最近更新 更多