为什么在JBoss 5.1下的tomcat下运行的restlet将我的index.html页面返回为“application / octet-stream”而不是“text / html”?

时间:2009-12-08 18:09:27

标签: tomcat jboss restlet

我在一个名为“webapp-1.0.war”的war文件中有一个主页home.html。当浏览器请求“http://domain/myapp”时,我希望home.html已投放,但我希望浏览地址栏能够继续显示“http://domain/myapp”。我不想在地址栏中输入“http://domain/myapp/home.html”。

所以我把它放到web.xml中:

<welcome-file-list>
  <welcome-file>home.html</welcome-file>
</welcome-file-list> 

我添加了一个带有以下内容的jboss-web.xml:

<jboss-web>
  <context-root>myapp</context-root>
</jboss-web>

这几乎可行。当浏览器请求“http://domain/myapp”时,发送了home.html,但是mime类型是application / octet-stream而不是text / html,这使得Firefox认为它是文件下载。

3 个答案:

答案 0 :(得分:2)

这不是默认行为。

Mime类型通常在web.xml中定义。对于Tomcat和克隆,appserver默认的mime类型在/conf/web.xml中定义。

然而,这可以通过webapp的/WEB-INF/web.xml中的自定义mime映射条目或请求 - 响应链中的servlet或过滤器中的HttpServletResponse#setContentType()来覆盖。我可以想象在/*上有一些不良的过滤器监听错误地嗅探并根据请求URL设置内容类型。查看您的webapp中是否存在类似内容。

答案 1 :(得分:2)

“octet-stream”是Restlet中的默认mime类型。 “html”在默认映射中定义。看起来你有自己的MetaDataService。您可以添加像这样的扩展名映射

getMetadataService().addExtension("html", MediaType.TEXT_HTML, true);

答案 2 :(得分:0)

它确实似乎是Restlet的默认行为。在考虑了一些之后,我想我喜欢这种行为。 RESTful思考,我认为整个Web应用程序(这是根URL所暗示的)并不是我的浏览器有兴趣检索的资源。浏览器真的对“home”资源的html表示感兴趣,它是Web应用程序的一部分。所以我想我会离开它。但我会继续向上投票,BalusC花时间为我回答。