Java Spring MVC Jboss IE 11,谁负责设置内容类型
我有一个SpringMVC应用程序,它引用了一个名为fancytree的js库,其中包含js文件和css文件。fancytree中的css文件指的是gif图像 现在,应用程序部署在JBoss服务器上。当尝试访问gif图像时,IE 11获得200,但内容类型为image/png 然而,在chrome上,它是image/webp 我试过了 1) 在web.xml中设置mime映射,但这不起作用Java Spring MVC Jboss IE 11,谁负责设置内容类型,java,spring-mvc,internet-explorer,jboss,mime,Java,Spring Mvc,Internet Explorer,Jboss,Mime,我有一个SpringMVC应用程序,它引用了一个名为fancytree的js库,其中包含js文件和css文件。fancytree中的css文件指的是gif图像 现在,应用程序部署在JBoss服务器上。当尝试访问gif图像时,IE 11获得200,但内容类型为image/png 然而,在chrome上,它是image/webp 我试过了 1) 在web.xml中设置mime映射,但这不起作用 <mime-mapping> <extension>gif<
<mime-mapping>
<extension>gif</extension>
<mime-type>image/gif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
3) 更改MVC配置
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false).
favorParameter(true).
parameterName("mediaType").
ignoreAcceptHeader(true).
useJaf(false).
defaultContentType(MediaType.APPLICATION_JSON).
mediaType("xml", MediaType.APPLICATION_XML).
mediaType("json", MediaType.APPLICATION_JSON).
mediaType("gif", MediaType.IMAGE_GIF).
mediaType("png", MediaType.IMAGE_PNG);
}
4) 在JBoss standalone.xml中设置全局mime映射
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="false">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
<configuration>
<mime-mapping name="gif" value="image/gif" />
<mime-mapping name="png" value="image/png" />
<mime-mapping name="html" value="text/html" />
</configuration>
</subsystem>
所有这些力都起作用
我的问题是谁负责设置MIME类型,是浏览器还是web服务器。如果web服务器负责在尝试设置mime类型时我做错了什么,那么在IE 11中它总是返回一个内容类型image/pngHi,听起来服务器端代码在使用UserAgent嗅探。然而。。。MSIE浏览器不支持webp格式,因此您所看到的是预期的。您可以使用IE开发工具的仿真选项卡来选择不同的UAS以在请求头中发送(并找出您当前使用的IE仿真模式),这通常是您在本地主机上开发的。使用IE中的“文件”>“属性”菜单确定localhost是否映射到您的IE INtranet区域,然后使用开发工具的“仿真”选项卡确定哪个IE仿真(和UAS)IE正在该区域中使用以及它是如何建立的…通常请参见Internet选项>Intranet Sites>Advanced button>从列表中删除localhost的Security选项卡,这样您的开发环境将映射到Internet区域,并使用“Edge”仿真模式,并在标头中发送不可知的UAS字符串…服务器仍将发送UserAgent的webp这支持这种格式。嗨,听起来服务器端代码正在使用UserAgent嗅探。然而。。。MSIE浏览器不支持webp格式,因此您所看到的是预期的。您可以使用IE开发工具的仿真选项卡来选择不同的UAS以在请求头中发送(并找出您当前使用的IE仿真模式),这通常是您在本地主机上开发的。使用IE中的“文件”>“属性”菜单确定localhost是否映射到您的IE INtranet区域,然后使用开发工具的“仿真”选项卡确定哪个IE仿真(和UAS)IE正在该区域中使用以及它是如何建立的…通常请参见Internet选项>Intranet Sites>Advanced button>从列表中删除localhost的Security选项卡,这样您的开发环境将映射到Internet区域,并使用“Edge”仿真模式,并在标头中发送不可知的UAS字符串…服务器仍将发送UserAgent的webp它支持这种格式。
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="false">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
<configuration>
<mime-mapping name="gif" value="image/gif" />
<mime-mapping name="png" value="image/png" />
<mime-mapping name="html" value="text/html" />
</configuration>
</subsystem>