前几天在把几个web应用配置为https (SSL)时出现了一个问题 搞了几天 查了资料才解决
我在csdn的论坛上也提了这个问题可以没有人回答,这里就不详细描述问题了 问题查看:http://topic.csdn.net/u/20120320/11/7bdeb2a1-231c-4302-b051-4e02d139d572.html
问题剖析:这是ie的一个bug,详见:http://support.microsoft.com/kb/323308
大概就是ie在https上当服务器返回的文档头Header里设置的缓存(Cache-Control)t和Pragma为private时下载资源文件就有问题了 ,但是设置为public了就没有问题了
我这里就以我出现的问题说明解决方法,我的问题是flex项目使用https后flash加载不成功
在web.xml中加filter对swf过滤,设置Cache-Control和Pragma为public
filter 如下:
- public class SwfSSLFilter implements Filter {
- public void destroy() {
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- HttpServletResponse httpServletResponse = (HttpServletResponse) response;
- // 通过https访问swf时
- if (httpServletRequest.getScheme() == "https"
- && httpServletRequest.getRequestURI().endsWith(".swf")) {
- httpServletResponse.setHeader("Expires", "0");
- httpServletResponse.setHeader(