objective-c - WKWebView loadFileURL 抛出 WebPageProxy::Ignoring 加载此主资源的请求,因为它在沙箱之外
问题描述
我正在尝试在 WKWebView 中打开本地 html 文件,但我不断收到错误消息:
从 Web 进程收到意外的 URL:'file:///Users/username/Library/Containers/dev.WebView/Data/file:/Users/username/Documents/WebView/WebView/WebView/WebContent/index.html'
2020-01-30 09:36:38.817862+0100 WebView[1679:20612] [Process] 0x101043e20 - WebPageProxy::Ignoring request to load this main resource because it is outside the sandbox
这是我尝试过的代码:
NSString *path = @"file:///Users/username/Documents/WebView/WebView/WebView/WebContent/index.html";
NSURL *url = [NSURL fileURLWithPath:path];
[_webView loadFileURL:url allowingReadAccessToURL:url];
我还尝试通过以下方式允许访问 Documents 目录:
NSString *path = @"file:///Users/username/Documents/WebView/WebView/WebView/WebContent/index.html";
NSURL *url = [NSURL fileURLWithPath:path];
NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0];
[_webView loadFileURL:url allowingReadAccessToURL:documentsURL];
我还在项目的签名和功能设置中启用了传出连接(客户端),也无济于事。
解决方案
解决方案是将 html 文件添加到项目并将其与 build 捆绑在一起,以便它显示在 Resources 目录中。在项目的 Build Phases 设置中,文件需要显示在 Copy Bundle Resources 下。
这是可用于加载文件的一段代码:
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *filePath = [mainBundle pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:filePath];
[_webView loadFileURL:url allowingReadAccessToURL:[url URLByDeletingLastPathComponent]];
您还可以在我的 github 存储库中找到完整的解决方案: Cocoa Web View Load Local File
推荐阅读
- flutter - 在颤振中使用 image_picker 拍摄多张照片
- javascript - 如何求和、识别和返回 case '0' 和 '-' in
- windows - 在软件级别控制 Windows 中的亮度
- android - 我是 android studio 的新手,当我在 res 文件夹下的 raw 文件夹中添加视频时,任何人都可以显示文件以错误的编码“UTF-8”加载
- jquery - 单击按钮时不会触发引导模式 - jQuery
- python - 如何验证nexmo语音客户端?
- c# - 如何从 .Net Core 中的多个 json 文件中读取值?
- javascript - 无法在 html5 画布上打开单个像素
- python - 类型错误:'在
同时通过 python telnet 发送 cmd - reactjs - 路由到 nginx 服务器上的 React.js 应用程序时“重写目标”失败