기본 콘텐츠로 건너뛰기

IE에서 파일 다운로드 안되는 현상 수정

-> windows xp 환경에서 발생

* 참조
http://support.microsoft.com/kb/316431

* 원인
Internet Explorer에서 Office(또는 out-of-process, ActiveX 문서 서버) 문서를 열 수 있으려면
Internet Explorer에서 로컬 캐시 디렉터리에 파일을 저장하고 IPersistFile::Load를 사용하여
관련 응용 프로그램이 파일을 로드하도록 요청해야 합니다. 파일이 디스크에 저장되지 않으면 이 작업은 실패합니다.

Internet Explorer가 SSL을 통해 보안 웹 사이트와 통신할 때 Internet Explorer는 모든 no-cache 요청을 적용합니다.
이 헤더가 있으면 Internet Explorer는 파일을 캐시하지 않으므로 Office는 파일을 열 수 없습니다.

-> no-cache 헤더를 제거해야 함
Pragma: no-cache  
// 로컬 캐시 대신 서버로부터 요청을 하도록 프록시 서버에 요구
Cache-control: no-cache,max-age=0,must-revalidate 
// 캐시를 사용하지 않으며, 저장하지 않고, 클라이언트측에서 데이터 재확인을 해야함


* 추가 정보
Internet Explorer 자체와 관련된 파일(.txt 파일, .html 파일, .gif 파일, .jpg 파일, .xml 파일 등)은 일반적으로 문제가 없습니다.
Office 이외의 응용 프로그램과 관련된 파일은 응용 프로그램에 따라 문제가 있을 수도 있고 없을 수도 있습니다.

-> Office 이외의 응용프로그램도 문제가 있었음


* 해결 방법
String userAgent = request.getHeader("User-Agent");
boolean isMSIE = StringUtils.isBlank(userAgent) ? false : userAgent.indexOf("MSIE") > -1;

if (isMSIE) {
response.setHeader("Pragma", "public");
}
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
response.setHeader("Cache-Control", "max-age=0, private, must-revalidate"


댓글

이 블로그의 인기 게시물

[JPA] deleted instance passed to merge

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.ObjectDeletedException:   deleted instance passed to merge: 위와 같은 에러가 발생... em.remove(user)를 호출하면 user는 영속성 컨텍스트에서 제거된다. (Object is already marked for being deleted) 이후 트랜잭션을 커믹해서 플러시를 호출하면 실제 데이터베이스에 삭제 쿼리를 전달한다. 하지만 삭제된 엔티티를 한 트랜잭션내에서 다시 삭제할려고하면 해당 익셉션이 발생한다. 참조 : 자바 ORM 표준 JPA 프로그래밍

Spring Redis Cluster Configuration

# build.gradle compile  'org.springframework.data:spring-data-redis' compile  'biz.paluch.redis:lettuce:4.5.0.Final' #RedisConfiguration @Configuration @ EnableRedisRepositories ( basePackageClasses  = { MyAppDomains. class  }) public class  RedisConfiguration {      @Value ( "${spring.redis.host}" )      private  String  redisHost ;      @Value ( "${spring.redis.port}" )      private int  redisPort ;      @Bean          public  RedisConnectionFactory  myRedisConnectionFactory () {         RedisClusterConfiguration clusterConfig =  new  RedisClusterConfiguration() ;          clusterConfig.clusterNode( redisHost ,  redisPort ) ;         re...

xsl-fo를 이용한 pdf 생성기술

1. PDF 생성 기술 개발을 위해 적용가능한 오픈소스 1)  pdfbox - http://pdfbox.apache.org/ - License : Apache License Version 2.0 2)  iText - http://itextpdf.com/ - License : APGL License 3)  Apache FOP - http://xmlgraphics.apache.org/fop/ -> 유지보수 비용은 높지만, 무료이며 한글이 출력 가능한 Apache FOP를 적용 2. XSL-FO를 이용하여 PDF를 어떻게 생성 하는지 설명 * XSL-FO의 기본 프로세스 용어 설명 1) XSLT - XML 문서를 다른 XML 문서로 변환하는데 사용하는 XML 기반의 언어 - 원본 문서는 변경되지 않으며, 원본 문서를 기반으로 새로운 문서를 생성 2) XSL-FO - XSL-FO는 종이, 화면 등 다양한 매체에 출력 하기 위한 XML 기반의 마크업 언어 - 사용자는 XSL-FO를 통해 어떻게 정보가 PDF에 출력되는지 확인 가능 3) XSL-FO Formatter - XSL-FO 문서를 최종 결과물인 PDF(다른 매체도 가능)문서로 변환할 수 있는 Formatter 간략하게 애기하면,  XSL-FO를 Formatter로 변환하게 되면 PDF가 생성되며,  XSL-FO는 사용자가 직접 작성할 수도 있고 XML source와 XSLT stylesheet를 이용하여 동적으로 생성 가능하다. 3. 간단한 예제로 정리 1) 필요한 데이터를 XML에 기술한다. XML file  <?xml version="1.0" encoding="UTF-8"?> <root>   <name>홍길동</name> </root>  ...