html5 ios cookie,ios – WKWebView,获取所有cookie
我想從WKWebView獲取所有cookie.為什么?我已經(jīng)啟動了一個使用基于Web的身份驗(yàn)證的項目.因此,我應(yīng)該攔截cookie以確保用戶已登錄并用于其他目的.另一種情況 – 想象一下,如果用戶登錄,而不是“殺死”應(yīng)用程序 – 由于存儲此cookie會話的一些延遲將丟失:(.
The problem seems to be that the cookies are cached and not saved out
to a file immediately.
(@Kemenaran從here – 下面第5頁)
我試圖抓住他們的地方 –
webView的:decidePolicyForNavigationResponse:decisionHandler :,
func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) {
if let httpResponse = navigationResponse.response as? NSHTTPURLResponse {
if let headers = httpResponse.allHeaderFields as? [String: String], url = httpResponse.URL {
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(headers, forURL: url {
for cookie in cookies {
NSHTTPCookieStorage.shared.set(cookie)
}
}
}
}
但并非所有請求都是導(dǎo)航,因此跳過一個cookie(在我的情況下),請參閱下面的詳細(xì)信息
關(guān)于我試過的其他選項的幾句話……
>是的,我知道從iOS 11開始,我們可以使用WKHTTPCookieStore作為here.但是我的項目應(yīng)該支持iOS 9
>我100%肯定,在登錄后5-10秒,所需的cookie將保存到NSHttpCookieStorage(至少我?guī)滋斓乃袦y試都確認(rèn)了)
>我嘗試使用提供的觀察者NSHTTPCookieManagerCookiesChangedNotification,但它只為webView中的cookie提供回調(diào):decisionPolicyForNavigationResponse:decisionHandler
>我也嘗試使用像here中提到的一些JS來獲取cookie,并且還測試了here的所有建議 – 順便說一句,這篇文章非常精彩.結(jié)果 – 消極
>我也發(fā)現(xiàn)了這個radar bug,以及SO question和Sample project,但我想防止這種情況. (在這篇文章中描述的不僅適用于刪除而且適用于保存)此情況也是如此,當(dāng)用戶終止應(yīng)用程序時,用戶登錄,殺死應(yīng)用程序和重新啟動的情況可能會出現(xiàn).并且防止這種情況(簡單地通過檢查NSHttpCookieStorage來獲取所需的cookie也不是一個好主意,因?yàn)橥耆诘卿浐笮枰猚ookie可以存儲一些延遲,所以這種方法需要一些bool驅(qū)動的解決方案,看起來很奇怪..
>我還閱讀了一些相關(guān)問題的SO帖子,最有用的是
但仍然沒有好的解決方案……
那么,是否存在獲取或至少強(qiáng)制立即存儲cookie的方法?
總結(jié)
以上是生活随笔為你收集整理的html5 ios cookie,ios – WKWebView,获取所有cookie的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浙江丽水学院计算机专业,2019丽水学院
- 下一篇: 计算机考研数学基础知识点,2019计算机