[iOS18 Beta] WkWebView Cookies 못 가져오는 현상 (SameSite default Lax 변경)
안녕하세요 물먹고하자 입니다 :)
iOS18 대응하고 있는중에 WkWebView에서 Cookies 값을 못가져가는 현상이 있어서
해결했던 부분 공유드립니다.
이슈발생
(이미지1) iOS18 Beta, (이미지2) iOS17 정식버전
해당 부분의 코드의 상황설명을 덧붙이자면
API 통신 후 전달받은 HtmlString 값을 WkWebView에 넣어주는 화면
(거기에서도 iframe으로 Redirect가 되는 특정 화면)
저희기준의 인증에러가 발생하였고,
Nginx 로그를 확인했을때도 Cookies 값이 들어오지 않은걸로 확인됨.
이슈찾는과정
WkWebView 영역임으로 Safari 개발자 모드를 통해 디버그 하기 시작.
(참고 : [iOS] WebKit 개발자모드 디버깅하기)
디버깅통해서 호출시에도 확실하게 401 인증에러 발생하는걸 확인 |
iOS18 약속된 Cookies값 3개 들어가있는걸 확인 |
iOS17 동일하게 약속된 Cookies값 들어있음. (로드 후 추가 쿠키도 확인) |
나는 Cookies를 줬고 <-------> 상대는 Cookies를 못받은 상황
(누구의 잘못인가.. 누가 가로챌일도 아니고 생각하다가)
두개 이미지를 계속보다가 끝자락에 SameSite 정보값이 틀린걸 확인
iOS 18 SameSite 검색 하다가 발견한 내용 SameSite 설정 값 "Strict" > "Lax" > "none" SameSite 설정값이 3가지 인데, 기존에는 "none" 이 default 였는데 iOS18부터 "Lax"가 default로 변경 위의 이미지랑 Cookies 값 대조해도 변경된걸 확인 |
테스트로 iOS17에서 SameSite "Lax"로 설정하니 iOS18과 동일하게 나오는걸 확인 이제 대응 |
loadHTMLString 함수 호출시 baseURL nil 이였던 부분을 도메인정보로 기입 (필자의경우는 도메인을 따로 받아서 회사별 값 셋팅하게 처리) |
이슈 해결 😁
추가건
댓글 써주신거 보고 추가로 검색해보다가 나온부분 추가 기입
iOS18 Release Note : https://developer.apple.com/documentation/safari-release-notes/safari-18-release-notes
실험당시 WkWebView 호출 부분을 사파리로 개발자 디버깅 켜서 확인을 해서 iOS18 부터 바꼈구나 생각했는데, Release Note 찾아보니, iOS18 부터 Cookies 셋팅시 SameSite 속성이 없는경우 Lax 로 수정했다는 글을 찾았네요. (댓글 써주셔서 감사합니다.)
iOS18 Release Note : https://developer.apple.com/documentation/safari-release-notes/safari-18-release-notes
실험당시 WkWebView 호출 부분을 사파리로 개발자 디버깅 켜서 확인을 해서 iOS18 부터 바꼈구나 생각했는데, Release Note 찾아보니, iOS18 부터 Cookies 셋팅시 SameSite 속성이 없는경우 Lax 로 수정했다는 글을 찾았네요. (댓글 써주셔서 감사합니다.)
마무리
오늘은 iOS18에서 WkwebView HTMLString으로 호출시 Cookies 값을 못가져가는 이슈건 수정했습니다.
아직까지 다른 iOS18 이슈건이없었는데, 보안등급이 올라가면서 이슈가 나올줄은 몰랐네요
해결방법은 간단했는데, 찾는과정이 사실 오래걸렸습니다 ㅠ
오늘은 이만
즐거운코딩되세요.
잘읽었습니다. 다만, ios18 에서 samesite 정책이 변경되었다는 내용은 공식문서 등 어디서도 찾아볼 수 없습니다. 해당 속성은 ios13부터 default 값이 Lax 로 되어있으며 미설정시 Lax 로 동작하는것으로 알고 있는데요
답글삭제