2010-05-11 106 views
1

我有一个不兼容IE8浏览器的应用程序。配置Tomcat发送兼容IE 7或6的网页

我正在寻找一种方式来配置Tomcat在此应用程序运行,使页面可以通过IE8来读取和处理,就好像它们是IE7或IE6

通过google搜索到目前为止,我发现了一个可能的建议这说可添加到HTTP响应报头: X-UA-兼容:IE = EmulateIE7
here

告诉IE8要像IE7。

问题是,这种方式需要添加应该在应用程序级别添加的过滤器。我想知道你们中的任何一位是否熟悉Tomcat能够将其http内容发送为IE7(或IE6)兼容的更通用的方式?

回答

1

Tomcat是一个通用的webserver和servlet容器。这绝对是与浏览器无关的,因此,没有办法以某种特殊的方式来配置它来处理IE。

您不必真的添加过滤器。最简单的方法是在“服务”方法(或doGet或doPost,无论应用程序使用什么)中的任何位置设置响应标头:

res.addHeader(“X-UA兼容”,“IE = EmulateIE7”);

但是,这是在服务器应用程序中有一个入口点的情况下。否则,过滤器应该以更好的方式完成这项工作。

0

看到这个论坛thread讨论完全相同的情况,你正在描述。看来过滤器是最好的选择。作为上述线程的答案,您可以使用Url Rewrite Filter。另外,如果您使用Apache Web Server代理Tomcat,则可以轻松配置它以将任何标头添加到响应中。

4
  1. 下载urlrewritefilter-4.0.3.jar从http://tuckey.org/urlrewrite/
  2. urlrewritefilter-4.0.3.jar添加到WEB-INF/lib目录
  3. 添加以下代码到WEB-INF/web.xml中
<filter> 
<filter-name>UrlRewriteFilter</filter-name> 
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>UrlRewriteFilter</filter-name> 
<url-pattern>/*</url-pattern> 
<dispatcher>REQUEST</dispatcher> 
<dispatcher>FORWARD</dispatcher> 
</filter-mapping> 
  • 使该模块的新的配置文件。 (WEB-INF/urlrewrite.xml)
  • <?xml version="1.0" encoding="utf-8"?> 
    <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> 
    <urlrewrite> 
    <rule><condition name="user-agent">.*MSIE.*</condition> 
    <set type="response-header" name="X-UA-Compatible">IE=EmulateIE7</set> 
    </rule> 
    </urlrewrite>