Nativescript Webview在iOS上获取Cookie

时间:2019-01-04 12:59:59

标签: ios cookies webview nativescript

在我的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();

1 个答案:

答案 0 :(得分:0)

我知道这是一个较晚的帖子。但仍然可以,如果它可以帮助某人。

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本机代码中的类似方法。