투케이2K

48. (TWOK/ERROR) [Ios] 웹뷰 (webview) 내에서 페이지 이동 간 쿠키가 공유 되지 않는 이슈 본문

투케이2K 에러관리

48. (TWOK/ERROR) [Ios] 웹뷰 (webview) 내에서 페이지 이동 간 쿠키가 공유 되지 않는 이슈

투케이2K 2022. 4. 11. 08:04

[환경 설정 및 설명]

프로그램 : Xcode

설 명 : 웹뷰 (webview) 내에서 페이지 이동 간 쿠키가 공유 되지 않는 이슈

 

[에러 원인]

1. 웹뷰 (webview) 로드 시 URLRequest.addValue 헤더 필드 쪽에서 쿠키 삽입 시 페이지 이동 간 쿠키 값이 공유 되지 않는 이슈

 

[해결 방법]

1. 웹뷰 (webview) 최초 로드 시 URLRequest.addValue 헤더 필드 쪽에서 쿠키 삽입

  > 웹뷰 로드 완료 상태 100 프로가 되면

  > 다시 webview.evaluateJavaScript 자바스크립트 데이터 전송 방식을 사용해 쿠키 직접 삽입 실시

  > 웹뷰 리로드 수행 실시

[IOS]

1. 웹뷰 웹뷰 초기 설정 셋팅 수행 실시 및 로드 하기 (전) 웹뷰 헤더 쪽에 쿠키 삽입 , 웹뷰 로드 수행 실시
  - 쿠키 추가 셋팅 위함 : 웹뷰 WKWebViewConfiguration.websiteDataStore 설정을 >> WKWebsiteDataStore.nonPersistent() 로 설정
  - 헤더 쪽 쿠키 삽입 실시 : URLRequest.addValue("데이터", forHTTPHeaderField: "Cookie")
  - 웹뷰 로드 실시 : webview.load(request)





2. 웹뷰 로드 완료 상태 100 프로가 되면 다시 webview.evaluateJavaScript 를 사용해 쿠키 스토리지에 쿠키 삽입 실시
  - 웹뷰 로드 완료 상태 체크 : override func observeValue
  - 쿠키 문자열 형태 만듦 : document.cookie='쿠키 스트링 데이터'
  - 쿠키 문자열을 자바스크립트 브릿지를 사용해 삽입 실시 : webview.evaluateJavaScript("\(cookies)")





3. webview.evaluateJavaScript 자바스크립트 데이터 전송 성공 및 실패 상태에서 성공한 경우 웹뷰에 저장된 쿠키 목록 확인
  - 웹뷰 저장된 쿠키 목록 확인 : webview.configuration.websiteDataStore.httpCookieStore.getAllCookies





4. 정상적으로 쿠키가 삽입되어 있는 경우 >> 다시 웹뷰 리로드 수행 실시 
  - 웹뷰 리로드 : self.main_webview!.reload()





5. decidePolicyFor 실시간 웹뷰 주소 변경 상태 체크 부분에서 allow 처리 및 정상적으로 쿠키를 가지고 페이지 이동 처리가 되는지 확인
  - 웹뷰 저장된 쿠키 목록 확인 : webview.configuration.websiteDataStore.httpCookieStore.getAllCookies
 
반응형
Comments