6

我正在尝试使用 cefpython 制作一个混合 python-js 应用程序。

我想拥有:

  • cef python 应用程序本地的 JS 和 HTML 文件(例如,在“./html”、“./js”等中)
  • 加载其中一个 HTML 文件作为初始页面
  • 避免文件相互访问(例如目录之间)的任何 CORS 问题

以下似乎可以加载第一页:

browser = cef.CreateBrowserSync(url='file:///html/index.html',
                                window_title="Rulr 2.0")

但是,然后我遇到了 CORS 问题。我还需要运行网络服务器吗?或者是否有处理本地文件的有效模式?

4

1 回答 1

2

尝试将“disable-web-security”开关传递给 cef.Initialize 或设置 BrowserSettings.web_security_disabled。

也尝试设置 BrowserSettings.file_access_from_file_urls_allowed 和 BrowserSettings.universal_access_from_file_urls_allowed。

CEF 中有一些用于加载自定义内容的选项,它们可用于加载文件系统内容而没有任何安全限制。有一个资源处理程序、一个方案处理程序和一个资源管理器。在 CEF Python 中,目前只有资源处理程序可用。README-Examples.md 页面上有 wxpython-response.py 示例。

资源管理器是一个用于加载各种内容的非常简单的 API,它将在 Issue #418 中实现(欢迎 PR): https ://github.com/cztomczak/cefpython/issues/418

对于方案处理程序,请参阅问题 #50: https ://github.com/cztomczak/cefpython/issues/50

此外,上游 CEF 中还有 GetResourceResponseFilter,这是一个比资源处理程序更简单的选项,可通过问题 #229 实现: https ://github.com/cztomczak/cefpython/issues/229

您还可以在您的应用程序中运行一个内部 Web 服务器(使用 Python 很容易做到)并以这种方式提供文件。上游 CEF 还具有内置的 Web 服务器功能,但我认为这不会在 cefpython 中公开,因为在 Python 中设置 Web 服务器已经很容易了。

于 2018-08-04T10:53:37.597 回答