如何使用 WKWebView 进行清单请求
Posted
技术标签:
【中文标题】如何使用 WKWebView 进行清单请求【英文标题】:how can I do manifest request with WKWebView 【发布时间】:2015-05-14 05:44:40 【问题描述】:我试图在我的应用程序中使用新的 WebView,但似乎
WKWebView
不能与 NSURLCache
一起使用,Manifest
请求不起作用,没有加载任何请求,也没有存储任何内容。
除了使用NSURLCache
和Manifest
之外,使用WKWebView
而不是UIWebView
似乎一切都更好,所以我想知道是否有一些方法可以解决这个问题。
附:我试过 Private API _setOfflineApplicationCacheIsEnabled:
并且它确实有效,但是使用非公共 API 的应用程序将被苹果拒绝......我现在没有想法了。
【问题讨论】:
【参考方案1】:目前,WKWebView 实例将忽略任何默认网络存储(NSURLCache、NSHTTPCookieStorage、NSCredentialStorage)以及可用于自定义网络请求的标准网络类(NSURLProtocol 等)。
所以 WKWebView 实例的 cookie 没有存储在您的 App 的标准 Cookie 存储中,因此仅使用标准 Cookie 存储的 NSURLSession/NSURLConnection 无法访问 WKWebView 的 cookie(这可能就是问题所在你有:“登录状态”很可能存储在 cookie 中,但 NSURLSession/NSURLConnection 不会看到 cookie。
缓存、凭据等也是如此。WKWebView 有自己的私有存储,因此不能很好地与标准 Cocoa 网络类配合使用。
您也不能自定义请求(添加您自己的自定义 HTTP 标头,修改现有标头等),使用您自己的自定义 URL 方案等,因为 WKWebView 也不支持 NSURLProtocol。
所以现在 WKWebView 对许多应用程序来说是毫无用处的,因为它不参与 Cocoa 的标准网络 API。
【讨论】:
我想我已经在其他地方读过这条评论了......无论如何,谢谢 嗯...确实,但这告诉我不要使用 wkwebview... 我想解决这个问题以上是关于如何使用 WKWebView 进行清单请求的主要内容,如果未能解决你的问题,请参考以下文章
iOS:WKWebview 如何允许位于 bundle 中的 html 文件对文档目录进行读取访问
如何在 iOS 中使用 WKWebView 将值动态传递到 iFrame