如何使用 WKWebView 进行清单请求

Posted

技术标签:

【中文标题】如何使用 WKWebView 进行清单请求【英文标题】:how can I do manifest request with WKWebView 【发布时间】:2015-05-14 05:44:40 【问题描述】:

我试图在我的应用程序中使用新的 WebView,但似乎 WKWebView 不能与 NSURLCache 一起使用,Manifest 请求不起作用,没有加载任何请求,也没有存储任何内容。

除了使用NSURLCacheManifest之外,使用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

如何检查 WKWebView 是不是已加载 HTML 字符串

在 Swift 中使用 WKWebView 进行身份验证

你如何允许 WKWebView 接受重定向 url

WKWebView详解(三)Cookie的认识