要解决IE8兼容性问题,我想在不更改应用程序源代码的情况下更改REST服务响应的内容类型。
我尝试使用mod_rewrite规则执行此操作:
RewriteCond %{HTTP_USER_AGENT} .*MSIE\s8.*
RewriteRule /app/name(.*) - [T=application/new.content.type+xml]
此规则适用于静态内容,但不适用于REST服务响应。
我使用Apache 2.2.3和JBoss 5.1。
在Apache上,我已经在httpd.conf文件和日志文件中配置了RewriteRule,请参阅:
(3) applying pattern '/app/name(.*)' to uri '/app/name/events/service'
(4) RewriteCond: input='Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)' pattern='.*MSIE\\s8.*' => matched
(2) remember /app/name/events/service to have MIME-type 'new.content.type'
(1) pass through /app/name/events/service
(1) force filename service to have MIME-type 'new.content.type'
在JBoss上,我尝试在引擎和服务器级别配置RewriteValve,在日志文件中我可以看到:
2014-11-19 10:56:34,442 DEBUG [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost]] Rewrote /app/name/events/services as /app/name/events/services with rule pattern /app/name(.*)
规则似乎已应用,但我的REST服务内容类型保持不变。
有人可以提出原因或后续步骤进一步调试吗?
非常感谢。