사파리 IFRAME에서는 같은 도메인의 로컬스토리지 공유가 안되요
msa로 만들어진 서비스들의 sso 관련 처리를 하는데 겪었던, 사파리에서 iframe안의 로컬스토리지가 크롬과는 다르게 동작하는 것을 공유한다.
https://stackoverflow.com/questions/20401751/iframe-localstorage-on-safari-and-safari-mobile
위 스택오버플로우의 질문과 같은 상황인데,
a.domain.com, b.domain.com
두개의 도메인으로 서비스가 운영되는데, 사파리의 IFRAME에서 로컬스토리지가 공유가 안된다.
a.domain.com 에서 로컬스토리지에 데이터를 설정하고, b.domain.com 에 이동해서 직전에 a.domain.com의 로컬스토리지에 설정한 데이터를 가져오려고, 안보이는 iframe에서 a.domain.com을 호출했다. 그런데 웬 걸? 아이프레임 안에서 로드된 a.domain.com 에 로컬스토리지에는 아무것도 담겨있지 않았다. 크롬에서는 이상없는 부분이라, 두 브라우저에서 로컬스토리지를 다르게 처리하는 부분이 있는 것이다.
만약 JWT를 사용하고 있고 여러도메인을 가진 서비스들 사이에서 SSO 로그인 처리를 하는데, access_token을 어디에 저장할지 localstorage 와 쿠키 사이에서 고민하고 있다면, 무조건 쿠키로 하세요 라고 말해주고 싶다.