Nginx Lua Module을 개발하면서 크롬에서는 쿠키가 저장되는데, IE11에서는 쿠키가 저장되지 않는 문제가 발생했다.
몇 가지 점검해야 할 부분이 있었다.
첫째, 서버 시간과 브라우저 시간이 일치하는지 확인해야 한다. 쿠키 삭제를 클라이언트 시스템 시간 기준으로 하니까 서버와 클라이언트와 시간 차이가 있는지 확인하는 것이 먼저다.
둘째, expires 필드의 날짜 포맷이 맞는지 확인한다.
정확한 포맷 :
Wed, 21 Oct 2015 07:28:00 GMT
비슷해 보였었는데, 약간 다른 부분을 확인했다.
expires = os.date("!%c", os.time() + 60) -- Thu Mar 23 01:10:04 2017 GMT
그래서 포맷을 정확하게 바꿨다.
-- Thu, 23 Mar 2017 01:15:36 GMT
expires = os.date("!%a, %e %h %Y %H:%M:%S GMT", os.time() + 60)
셋째, 도메인을 지정하지 않는 것이다. IE11에서는 도메인을 지정하지 말아야 한다.
넷째, max_age를 사용하지 말고, expires를 사용하는 것이 좋다. 오래된 IE에서 지원하지 않는다.
쿠키는 시간이 다른 문제를 교정하는 데 문제가 있어서 결국, 쿠키의 expires로 만료 시간을 지정하지 않고, nginx의 공유 메모리에 만료 시간을 지정하는 방식을 썼다.