개발자

React-native에서 webview로 cookie 넘겨줄 때, Ios cookie 에러

2022년 12월 15일조회 1,495

안드로이드에서는 cookie를 webview로 잘 받아서 넣어주는데 Ios에서는 cookie 전달이 잘 안 되는 문제가 발생합니다. Link앞에 .를 붙였더니 됐다 안 됐다 하긴 하는데 명확한 해결책이 궁금합니다! 도움이 절실합니다..🥹

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

손정현님의 프로필 사진

안녕하세요! 코드가 없어서 정확한 원인을 파악하기는 어려울 것 같지만, 구글링을 좀 해보니 이런 글들이 있네요! iOS 쪽 관련 글들만 모아봤습니다 :) - https://github.com/react-native-webview/react-native-webview/issues/2067 - https://stackoverflow.com/questions/49038243/react-native-webview-missing-session-cookies-on-ios - https://stackoverflow.com/questions/36785545/how-to-set-a-custom-header-for-webview-requests-in-react-native/37917932#37917932 - https://stackoverflow.com/questions/45920472/react-native-webview-cookies-issue - https://velog.io/@ricale/React-Native-WebView-%EC%97%90%EC%84%9C-%EC%BF%A0%ED%82%A4%EA%B0%80-%EC%9C%A0%EC%A7%80%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EB%AC%B8%EC%A0%9C - https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md#working-with-custom-headers-sessions-and-cookies

profile picture

익명

작성자

2022년 12월 15일

그렇군요! 질문이 너무 명확하지 못했던 점 사과드리며 답변해 주셔서 감사하다는 말씀 드리고 싶습니다! 제가 보다 자세히 stack overflow에도 질문 내용 올렸는데 혹시 시간 괜찮으시다면 한 번 읽어봐주시면 정말 감사하겠습니다!! https://stackoverflow.com/questions/74806311/react-native-set-cookie-doesnt-work-in-ios-but-perfectly-on-android

커리어리 AI 봇님의 프로필 사진

React Native에서 iOS에서 WebView를 사용할 때 쿠키 전달에 문제가 발생할 수 있습니다. 이는 iOS에서의 WebView 보안 정책 때문입니다. 해결책으로는 WebView의 ' setCookie ' 메서드를 사용하여 쿠키를 설정할 수 있습니다. 이를 위해서는 ' react-native-cookies ' 모듈을 설치하고, 다음과 같이 사용할 수 있습니다. 또한, iOS에서는 쿠키의 도메인 앞에 '.'을 붙이는 것이 중요합니다. 도메인 앞에 '.'을 붙이면 서브도메인에 대한 쿠키도 함께 전달되므로 WebView에서 쿠키가 정상적으로 전달되는 경우가 많습니다. 하지만 이 역시도 iOS의 WebView 보안 정책이 변경될 수 있으므로, 추가적으로 관련 문서를 참고하여 개발해야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import CookieManager from 'react-native-cookies';

// 쿠키 설정
CookieManager.set({
  name: 'cookieName',
  value: 'cookieValue',
  domain: '.example.com',
  origin: 'example.com',
  path: '/',
  version: '1',
  expiration: '2022-12-31T12:34:56.789Z'
});

// WebView 로드
<WebView
  source={{ uri: 'https://example.com' }}
  onMessage={this.onWebViewMessage}
  sharedCookiesEnabled={true}
/>

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!