WebView拒绝访问Sandboxed Mac App中的网页资源

时间:2012-07-03 18:59:10

标签: macos cocoa webview sandbox

我最近开始实施Mac App Store沙盒(ugh),并注意到加载到WebView中的已保存的HTML存档不会呈现引用的资源。例如,保存的网页MyPage.html可以在相应的MyPage_files文件夹中引用styles.css,image.jpg和script.js(谷歌浏览器保存“网页,完整”惯例):

  • 的mypage.html
  • MyPage_files / styles.css的
  • MyPage_files / image.jpg的
  • MyPage_files /的script.js

但是,在将MyPage.html文件加载到WebView后,Console.app会报告如下错误:

sandboxd: deny file-read-data /Users/user/Desktop/MyPage_files/styles.css
sandboxd: deny file-read-data /Users/user/Desktop/MyPage_files/image.jpg
sandboxd: deny file-read-data /Users/user/Desktop/MyPage_files/script.js

这应该被视为一个错误,还是仅仅是沙箱中WebViews的限制?

1 个答案:

答案 0 :(得分:1)

这是原始沙箱设计的限制,但它是Apple(至少部分)修复的设计。

Apple工程师至少在两个地方讨论过这个新解决方案,但不幸的是,我相信它们都是“预发布”信息来源,苹果公司之外的任何人都不允许在这样的公共场所谈论。

如果您有付费的Mac开发者计划会员资格,请转到Application Sandboxing forum

我相信来自The WWDC 2012 videos的“OS X App Sandbox”视频无需付费的Mac开发者计划会员资格即可使用。

此外,请记住,除非您愿意要求所有用户升级到新版本的OS X,否则您将需要某种回退。您肯定会向Apple提交错误,说明您需要什么,并在论坛上发布它。您可以在非预发布论坛上发布它,因为您询问如何在Lion上执行此操作,这不涉及任何机密信息。

最后一点:如果您自己创建存档,可以保存它们,以便有一个包含.html文件和_files子目录的MyPage包。然后,当用户选择您的捆绑包时,您将可以访问所有内容。但是,如果您尝试打开例如Safari创建的档案,这当然不会起作用。