<meta http-equiv = "X-UA-Compatible" content = "IE = 8" / "> is ignored in RichFaces webapp
I am using JSF 2.0 and RichFaces 3.3.3 on Glassfish 2.1. I created a web application with a modal panel that works great on my computer (local server). Due to IE9 incompatibility with a specific version of RichFaces, I use the X-UA-Compatible: IE=8 meta tag X-UA-Compatible: IE=8 in my HTML chapter:
<meta http-equiv="X-UA-Compatible" content="IE=8" /> The modal panel looks like this when deployed in a local environment:

But when deploying to a production server, a problem occurs.
If I use IE with compatibility view 
(source: geneanet.org )
My modal panel looks like this:

If I do not use the compatibility view, I see a modal panel, but all my ajax buttons do not work.
How is this caused and how can I solve it?
From IE Developer Documentation, Determining Document Compatibility :
...
The
X-UA-Compatibleheader is not case sensitive; however, it should appear in the title of the web page (HEAD section) in front of all other elements, with the exception of the title element and other meta elements ....
RichFaces 3.3.3 by default automatically includes <link> elements that link to RichFaces CSS stylesheets at the very top of the head, before the original contents of the <head> template. Thus, the HTML <meta> style X-UA-Compatible header will always work in RichFaces 3.3.3 webapp. The fact that it works fine in your local development environment is most likely because you added the localhost site to the list of IE8 compatible sites in your browser configuration. The presence of the X-UA-Compatible header no longer matters.
It is best to set the X-UA-Compatible header directly in the HTTP response, rather than as an HTML meta tag. You can do this with a simple servlet filter that maps to the FacesServlet and performs the following task:
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { ((HttpServletResponse) response).setHeader("X-UA-Compatible", "IE=8"); chain.doFilter(request, response); }