Ios WKWebView 拦截 http/https 请求
Ios WKWebView intercepting http/https requests
我的 android 版本的应用程序使用 WebView 并依赖 shouldInterceptRequest
方法来提供在运行时下载并由 http/https
从 WebView 请求的 svg 资源。
希望在 ios 版本的应用程序上迁移此类行为。然而似乎 WKWebView
没有提供拦截 http/https
请求的工具。鉴于必须使用 WKWebView
,可以采用哪些策略在 ios 上实现类似的行为?
最后我还是用了。 GCDWebServer
我已经像这样设置了本地网络服务器:
let webServer: GCDWebServer = GCDWebServer()
webServer.addGETHandler(forBasePath: "/", directoryPath: baseResourcePath, indexFilename: "index.html", cacheAge: 0, allowRangeRequests: true)
然后提供位于 index.html 包含目录之外的文件
必须附加自定义获取处理程序:
webServer.addHandler(forMethod: "GET", pathRegex: "images", request: GCDWebServerRequest.self) { request in
let fileName = request.path.components(separatedBy: "/images/")[1]
var documentsURL = FileManager.default.urls(for: .docmentDirectory, in: .userDomainMask)[0]
documentsURL.appendPathComponent("images/\(fileName)")
let response = GCDWebServerFileResponse(file: documentsURL.path)
return response
}
我的 android 版本的应用程序使用 WebView 并依赖 shouldInterceptRequest
方法来提供在运行时下载并由 http/https
从 WebView 请求的 svg 资源。
希望在 ios 版本的应用程序上迁移此类行为。然而似乎 WKWebView
没有提供拦截 http/https
请求的工具。鉴于必须使用 WKWebView
,可以采用哪些策略在 ios 上实现类似的行为?
最后我还是用了。 GCDWebServer
我已经像这样设置了本地网络服务器:
let webServer: GCDWebServer = GCDWebServer()
webServer.addGETHandler(forBasePath: "/", directoryPath: baseResourcePath, indexFilename: "index.html", cacheAge: 0, allowRangeRequests: true)
然后提供位于 index.html 包含目录之外的文件 必须附加自定义获取处理程序:
webServer.addHandler(forMethod: "GET", pathRegex: "images", request: GCDWebServerRequest.self) { request in
let fileName = request.path.components(separatedBy: "/images/")[1]
var documentsURL = FileManager.default.urls(for: .docmentDirectory, in: .userDomainMask)[0]
documentsURL.appendPathComponent("images/\(fileName)")
let response = GCDWebServerFileResponse(file: documentsURL.path)
return response
}