0

我最近开始实现 Mac App Store 沙盒(呃),并注意到加载到 WebView 中的保存的 HTML 档案不会呈现引用的资源。例如,保存的网页 MyPage.html 可以引用对应的 MyPage_files 文件夹中的 styles.css、image.jpg 和 script.js(Google Chrome 的保存“Webpage, Complete”约定):

  • 我的页面.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 的限制?

4

1 回答 1

1

这是原始沙盒设计的一个限制,但苹果已经(至少部分)修复了它。

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

如果您拥有付费的 Mac 开发人员计划会员资格,请访问Application Sandboxing 论坛

我相信WWDC 2012 视频中的“OS X App Sandbox”视频无需付费的 Mac 开发人员计划会员资格即可获得。

另外,请记住,您将需要某种回退,除非您愿意要求所有用户升级到新版本的 OS X。您绝对应该向 Apple 提交错误,解释您的需求,然后发布关于它在论坛上。您可以在非预发布论坛上发布有关它的信息,因为您在 Lion 上询问如何执行此操作,这不涉及任何机密信息。

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

于 2012-07-03T20:13:54.770 回答