2012-04-10 2 views
0

RichFaces를 사용 중이고 fileUpload 플래시 구성 요소 + IE + SSL에 문제가 있습니다. 내가 한 연구에 따르면, "Pragma"와 "Cache-Control"HTTP 헤더를 변경해야합니다.특정 콘텐츠 형식에 대한 HTTP 헤더를 변경하는 방법?

플래시 콘텐츠에만 해당 헤더를 어떻게 변경합니까? 서블릿 필터를 사용해 보았습니다. 헤더는 "노 캐시"로 돌아,

chain.doFilter(request, response); 
HttpServletResponse resp = (HttpServletResponse) response; 
if (resp.getContentType() != null && resp.getContentType().contains("flash")) { // application/x-shockwave-flash 
resp.setHeader("Pragma", ""); 
} 

필터가 실행되고, 헤더가 변경되고,하지만 나는 불을 지르고 확인 :이 doFilter() 방법이다. 이것은 내 web.xml에있는 마지막 필터이지만 다른 필터가 헤더를 다시 넣는 것처럼 발생합니다.

저는 JBoss 5도 사용하고 있습니다. 어떻게 해결할 수 있습니까? 감사.

답변

1

doFilter() 앞에 머리글을 설정하라는 지침을 실행하십시오. 이 방법은 다음과 같습니다.

HttpServletResponse resp = (HttpServletResponse) response; 
if (// .. your test) { 
    resp.setHeader("Pragma", ""); 
} 
chain.doFilter(request, response); 

서버가 클라이언트에 데이터를 보내기 시작하면 헤더 필드를 설정할 수 없기 때문에.

당연히 이런 식으로 contentType 요청 된 리소스를 확인하는 다른 방법을 찾아야합니다. 어쩌면 HttpServletRequest.getRequestURI() 및이 값의 파일 이름 확장명을 기반으로 확인을 수행 할 수 있습니다.

+0

서버가 요청을 처리 한 후 ** 응답을 보내기 전에 ** 헤더를 변경했다고 생각했습니다. 먼저 모든 응답의 머리글 설정을 테스트했지만 일부는 (플래시 포함 안함) 변경 사항을 유지했습니다. – Carcamano

+0

'doFilter'의 코드가 이미 클라이언트에 씁니다. 때로는 응답 할 수있는 대용량 버퍼 인 경우가 있지만이 제한을 초과하면 데이터를 전송하기 시작합니다. 그래서 당신은 확신 할 수 없습니다. – dash1e

+1

귀하의 제안이 효과가있었습니다. 하지만 필터에서 if 조건을 제거하고 배포 설명자에'' * .swf''을 추가했습니다. 고맙습니다. – Carcamano

관련 문제