自动识别mime类型在wildfly10中

4
为了支持所有的UTF-8字符,我们已经在Servlet过滤器中添加了相应功能。
servletResponse.setContentType("text/html; charset=" + "UTF-8");
servletRequest.setCharacterEncoding(servletResponse.getCharacterEncoding());

由于这个问题,它将所有文件类型以及CSS的内容类型设置为"text\html",浏览器会拒绝加载CSS并在浏览器上显示错误。
Resource interpreted as Stylesheet but transferred with MIME type text/html:

但是以上内容在jboss 6中可以正常工作。 我尝试设置


<servlet-container name="default">
    <jsp-config mapped-file="false" development="true"/>
    <websockets/>
    <mime-mappings>
        <mime-mapping name="css" value="text/css"/>
        <mime-mapping name="msi" value="application/x-msi"/>
    </mime-mappings>
</servlet-container>

我尝试在standalone-full.xml中配置,但是这并没有起作用。它是如何自动识别文件内容类型的?


你不需要这样做 - 默认编码是UTF-8。我会把它全部删除,因为服务器应该自动解决这个问题。 - stdunbar
@stdunbar 如果我移除这个,那么保存UTF-8字符就会失败,因为它会将该字符修改为其他内容。 - happy
1个回答

1
你的 Servlet 过滤器并不是支持所有 UTF-8 字符的最佳方案,正如你所注意到的,这个选择很奇怪,但我不会讨论它,因为这不是你的问题。
因此,如果你需要让你的 Servlet 过滤器不与除 text/html 之外的其他内容交互,只需使用一个servlet 过滤器 url-pattern
例如,你可以像下面这样定义一个 Servlet 过滤器:
<filter>
   <filter-name>MyServletFilter<filter-name>
   <filter-class>[...]</filter-class>
   <init-param>
       [...]
   </init-param>
</filter>

<filter-mapping>
   <filter-name>MyServletFilter</filter-name>
   <url-pattern>*.jsp</url-pattern>
</filter-mapping>

当然,您需要检查此模式是否符合您的目录结构和其他访问动态文本/HTML内容的方式。
因此,像http://myserver.com/myapp/myservlet/staticcontent/file.xls这样的资源不会被您的特定过滤器更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接