Mar*_*ges 6 nshttpcookie wkwebview ios11 wkhttpcookiestore
我正在尝试以编程方式设置Cookie,但无法正常工作。Cookie给人的印象是有效。然后,将其设置在上WKWebsiteDataStore.default().httpCookieStore。然后,在异步回调中,我尝试将所有cookie从商店中取出。但是,我的cookie不在那里。哪里去了!?
let httpCookieStore = WKWebsiteDataStore.default().httpCookieStore
var cookieProperties = [HTTPCookiePropertyKey: Any]()
cookieProperties[.name] = "MarkCookie"
cookieProperties[.value] = "MarkValue"
cookieProperties[.domain] = "localhost"
cookieProperties[.maximumAge] = 1234
cookieProperties[.path] = "/"
let cookie = HTTPCookie(properties: cookieProperties)!
httpCookieStore.setCookie(cookie) {
// This is called fine. The cookie looks ok.
print("Cookie set \(cookie)")
DispatchQueue.main.async {
httpCookieStore.getAllCookies { cookies in
// This is empty!!!!
print(cookies)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在测试并在控制台上为我设置的每个 cookiesetCookie收到一条令人烦恼的\xe2\x80\x9ccrash\xe2\x80\x9d 消息(尽管我的应用程序本身实际上并没有崩溃)。NetworkProcessProxy::didClose并且 fetch getAllCookies(或async方法,allCookies在我的例子中)返回一个空数组。
因此,想知道问题是否出在 中getAllCookies,我决定实际打开 a WKWebView,以便我可以查看 cookie 是否确实被传递(即,尝试确定问题是否是 cookie 本身,还是某些特殊的 API 行为)。但是,一旦我真正WKWebView加载了有问题的页面,所有后续调用都成功了,我对/setCookie的调用也是如此。getAllCookiesallCookies
我还没有完全追踪到它,但看起来需要进行一些 WebKit 初始化,WKWebView如果没有其他事情的话,可以通过加载 来解决一些问题。挑战在于,虽然我之前遇到了困难,没有克服这个错误,但现在我已经成功加载了WKWebView,我无法再重现该错误。(我尝试清空 \xe2\x80\x9c 派生数据\xe2\x80\x9d 文件夹,尝试在新项目或新域中,在 Safari 中手动删除该域的存储数据等。这些都不会重现错误。 ) 哈哈。
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |