在iOS上,缺少使用React Native WebView的"会话cookie"



错误描述:我的WebView应该显示一个具有cookie身份验证的网页。该页面需要在登录时获取会话id cookie。为了进行身份验证,我使用fetch((将登录请求发送到网站。

登录成功后,我可以看到收到了正确的cookie。一旦成功,我将启动WebView。

它在安卓系统上运行良好,但在iOS系统上则不然

我在iOS 9和iOS 11模拟器以及iOS 11设备上进行了测试。

总结一下这个问题:为什么我使用fetch获得的cookie没有仅在iOS上传递到WebView

<WebView 
source = {{
uri: url,
}}
onLoadEnd={() => {
CookieManager.getAll().then((cookies) => {
console.log('CookieManager.getAll =>', cookies);
});
}}
/>

在此处输入图像描述

环境:

  • 操作系统:IOS
  • 操作系统版本:14.4.2
  • react本机版本:0.64
  • react原生webview版本:^11.4.3

我使用getAllCookies从wkwebview获取cookie,如下所示。

if (@available(iOS 11.0, *)) {
[webView.configuration.websiteDataStore.httpCookieStore
getAllCookies:^(NSArray<NSHTTPCookie *> *_Nonnull cookies) {
NSURLRequest *request =
[[NSURLRequest alloc] initWithURL:self.URL]; //your URL
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session
dataTaskWithRequest:request
completionHandler:^(NSData *responseData, NSURLResponse *response,
NSError *error) {
//Do Something
}];
[task resume];
[session.configuration.HTTPCookieStorage storeCookies:cookies forTask:task];
}];
}

相关内容

  • 没有找到相关文章

最新更新