Top

[WEB] HTTPS, SSL 설정 후 파일 다운로드 안되는 문제 | Web-Programing
김경훈 (admin) | Editor | 2013/03/04 16:52:23 | 조회:13609

 ssl을 이용하여 https url로 구성된 웹사이트에서
파일 다운로드시 IE에서만 "다운로드할 수 없습니다" 라는 오류메시지가 나는 것을 발견했다.
IE9부터는 정상적으로 다운로드가 가능하게 지원을 해주는것 같지만
IE8 이하 버전 부터는 다운로드가 되지 않는다.

문제의 원인은 IE가 ssl을 통해 보안 웹 사이트와 통신 할때 캐시요청을 하게 되는데
파일 다운로드 헤더에 no-cache가 있으면 IE가 파일을 캐시 하지 않게 되어
파일다운로드를 하지 못한단다..

그리고 추가로 검색을 해보니,

Microsoft 고객센터에 이미 언급된 문제점이라는구나..
http://support.microsoft.com/kb/812935]로 이동합니다." target="_blank" href="http://support.microsoft.com/kb/812935" style="padding: 0px; margin: 0px; font-family: NanumGothic, 나눔고딕, 'Malgun Gothic', '맑은 고딕', dotum, 돋움; font-size: 16px; line-height: 24px;">
- HTTPS URL을 사용하여 Office 문서나 PDF 파일을 열 때 "다운로드할 수 없습니다." 오류 메시지가 나타난다

http://support.microsoft.com/kb/323308]로 이동합니다." target="_blank" href="http://support.microsoft.com/kb/323308" style="padding: 0px; margin: 0px; font-family: NanumGothic, 나눔고딕, 'Malgun Gothic', '맑은 고딕', dotum, 돋움; font-size: 16px; line-height: 24px;">SSL을 통한 Internet Explorer 파일 다운로드가 "No-Cache" 헤더에서 작동하지 않는다

원인
    * Internet Explorer 6.0 SP1에서 암호화된 페이지를 디스크에 저장 안 함 확인란이 선택되어 있습니다.
    * 서버가 "Cache-Control: No Store" 헤더를 보냅니다.
    * 서버가 "Cache-Control: No Cache" 헤더를 보냅니다.




위 문제를 해결하기 위해서는
서버가 Cache-Control 헤더로 No Store나 No Cache를 보내지 않도록 바꾸어주어야 한다.


Apache 서버의 http.conf 파일또는 .htaccess 파일을 수정하여 
다음과 같은 헤더명령을 추가 하거나,
==================================
<Files filename.php>
    Header unset Pragma
    Header unset Cache-Control
</Files>
==================================

PHP의 경우
다음과 같은 헤더를 다운로드 전에 보내주면 된다.
==================================
 Header("Pragma: dummy=bogus"); 
 Header("Cache-Control: private");
==================================

그리고 추가로!
파일 다운로드 헤더 파일에 no-cache 를 삭제해줘야 한다!

====================================================================

<download.php>
 Header("Content-Disposition: attachment; filename=$name"); 
 Header("Content-Type: text/html; charset=utf-8"); 
 Header("Content-Length: ".filesize("$fname")); 
 Header("Pragma:no-cache"); // 이놈을 삭제 해줘야 한다.

 Header("Expires: 0");
====================================================================

공유하기
공유하기
3
0
0


댓글을 불러오는 중입니다.
▲ 이전글 SK향 프라다 build.prop 최적화. 김경훈 (admin) 2013-03-07 15:01:20
▼ 다음글 [MS-SQL] 데이터베이스 백업 & 복원 진기원 (jjinki) 2013-02-26 15:33:21