http/https 에서 browser 가 caching 하지 않게 하는 http header
로그인용 사용자 이름, 비밀번호 및 기타 민감한 정보들을 보호하기 위해 SSL 을 로그인 페이지나 회원 정보 페이지등은 SSL로 암호화하는 경우가 많다.
SSL 을 사용해서 민감한 정보들을 보호한다고 해도 브라우저에 이 정보가 캐싱되면 문제가 발생할 수 있다. (PC방이나 공공장소에서 사용후 캐슁으로 인해 개인 정보가 남는등..)
다음 http 헤더를 사용하면 브라우저 캐싱을 방지할 수 있다. 단 캐싱을 하지 않으면 성능 저하가 발생할 수 있으므로 로그인 페이지등에 제한적으로 사용해야 한다.
HTTP 1.1
Cache-Control: no-cache, no-store, must-revalidate
HTTP 1.0
Pragma: no-cache
Proxy
Expires: 0
PHP
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1. header('Pragma: no-cache'); // HTTP 1.0. header('Expires: 0'); // Proxies.
Java Servlet
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. response.setHeader("Pragma", "no-cache"); // HTTP 1.0. response.setDateHeader("Expires", 0); // Proxies.
Trouble Shooting
- 특정 버전의 Internet Explorer 의 경우 no-cache 가 적용된 웹 페이지에서 다운로드를 실패함
Ref