【发布时间】:2016-11-17 15:52:07
【问题描述】:
在调用 loadRequest() 函数加载页面之前,我在请求标头中设置了 cookie。我还使用 document.cookie() 根据 [WKWebView Cookies. 通过 WKUserScript 设置 cookie。但是,我发现如果发生 302 重定向,请求可能会因 cookie 丢失而失败。比如http://A的请求重定向到http://B,我可以通过操作请求头和使用WKUserScript为http://A的请求设置cookie,但这两种方式都不能为http://B的请求设置cookie,所以http://B 的 302 请求可能会失败。这种情况在ios8比ios9出现的频率更高。有人有解决方法吗?
【问题讨论】:
-
你现在有解决这个问题的办法吗?
-
是的,但这并不完美,iOS 11 现在发布了一些新的完美 api 供开发人员管理 WKWebView cookie。
-
您能告诉我解决方法吗?我已经看到了注释,但是应用程序仍然需要在较低的 iOS 上更改 WKWebView。
-
是的,首先,我们将 cookie 添加到 NSHTTPCookieStorage。其次,我们在 WKNavigationDelegate 函数中检测请求头的 cookie 是否与 NSHTTPCookieStorage 相同 - (void)webView:(WKWebView *)webView decisionPolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;如果请求头的 cookie 为 nil 或与 NSHTTPCookieStorage 不同,我们将 NSHTTPCookieStorage 中的 cookie 添加到请求头中,取消当前请求并重新加载请求新请求。但是,它并不完美,它不能处理所有问题。
-
我遇到了“帧加载中断”的问题,你知道为什么吗?当我搜索这个错误时,它是针对 UIWebView 的。
标签: redirect cookies wkwebview