Nativescript webview 在 iOS 上获取 cookie
Posted
技术标签:
【中文标题】Nativescript webview 在 iOS 上获取 cookie【英文标题】:Nativescript webview get cookies on iOS 【发布时间】:2019-01-04 12:59:58 【问题描述】:在我的 Nativescript Angular 应用程序中,我使用 express-session 和 nativescript webview 对 node.js 服务器进行身份验证。 服务器向我发回一个 cookie (connect.sid),其中包含我将用于访问 node.js 应用程序的 sessionid。
我无法从 ios 上的服务器读取 connect.sid cookie。 我目前正在使用 NSHTTPCookieStorage.sharedHTTPCookieStorage.cookies,其中包含一个 connect.sid,但它的值不正确。
我设法在 android 上使用以下代码做到了这一点:
var cookieManager = android.webkit.CookieManager.getInstance();
var cks = cookieManager.getCookie(myserverdomain);
我正在尝试在 iOS 上做同样的事情:
const sharedCookieInstance: any =
NSHTTPCookieStorage.sharedHTTPCookieStorage;
const cookies: any = sharedCookieInstance.cookies();
但是,正如我之前所写,我在 iOS 上从中获得的 connect.sid 不是“最终”值..(它似乎是您执行第一个请求时实例化的第一个 connect.sid)
我已经阅读了一半的网页但没有找到答案。有人可以帮我吗?
提前致谢
//Android, working
var cookieManager = android.webkit.CookieManager.getInstance();
var cks = cookieManager.getCookie(myserverdomain);
//iOS, not working
const sharedCookieInstance: any =
NSHTTPCookieStorage.sharedHTTPCookieStorage;
const cookies: any = sharedCookieInstance.cookies();
【问题讨论】:
看起来您在 iOS 上使用了正确的 api,但可能是您在 WKWebView 可以将它们写入/更新到 NSHTTPCookieStorage 之前过早地访问 cookie。您能否构建一个 Playground 示例,让我们可以看到问题所在? 这将是一个问题,因为它是我无法共享的联合登录。只是想补充一点,我还尝试在 iOS 上使用 setTimeout 读取 cookie 之前等待 20 秒...我读过 nshttpcookiestorage 中的 cookie 并不总是立即可用....在 android 上不使用超时....所有这些显然都是在 webview 的 loadFinished 事件上完成的。但即使在 20 秒后,我也有相同的结果。现在,谢谢你的有趣。另外,到目前为止,我只在 iOS 模拟器上尝试过,还没有在设备上尝试过 您尝试在 WebView 中强制更新 cookie 吗? 不,因为我不明白该怎么做。虽然读了一些东西,但我不清楚,广告我对原生 ios 代码的经验很少 这就是要求提供样本的原因,我可以尝试看看强制同步是否有效。正如您已经提到的,这个问题在整个互联网上都在讨论,没有一个完美的解决方案。 【参考方案1】:我知道这是一个迟到的帖子。但是,如果它对某人有帮助的话。
WKWebsiteDataStore.defaultDataStore().httpCookieStore.getAllCookies(cookies =>
console.log('Received Cookies Are:'+ cookies)
//here is the way to get all the cookie information as a string.
NSHTTPCookie.requestHeaderFieldsWithCookies(cookies).objectForKey('Cookie')
)
注意:这与 iOS 原生代码中的方法类似。
【讨论】:
以上是关于Nativescript webview 在 iOS 上获取 cookie的主要内容,如果未能解决你的问题,请参考以下文章
Nativescript webview 在 iOS 上获取 cookie
使文件输入字段在Android nativescript vue webview上工作
无法在 nativescript vue 中导入 @nota/nativescript-webview-ext/vue
[翻译]Nativescript 中 Web 视图与 Android/IOS 的双向通信