【问题标题】:Cefpython app with html/js files in local filesystem本地文件系统中带有 html/js 文件的 Cefpython 应用程序
【发布时间】:2018-08-04 09:01:56
【问题描述】:

我正在尝试使用 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 问题。 我还需要运行网络服务器吗?或者有没有一种有效的模式来处理本地文件?

【问题讨论】:

    标签: chromium-embedded cefpython


    【解决方案1】:

    尝试将“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 服务器已经很容易了。

    【讨论】:

    • 感谢您的回答!一些注意事项... 许多用户发现 Python 的内置 Web 服务器速度非常慢(请参阅 stackoverflow.com/questions/12905426/… 注意,推荐的替代品都不是基于 Python 的)。这可能是暴露 CEF 的 Web 服务器的一个很好的理由。
    • 查看github.com/cztomczak/cefpython/blob/cefpython31/cefpython/cef3/… - 似乎在第 70 行,我们可以在这里截取并提供从磁盘加载的文件,对吗?我不相信这种方法特别快,但我可以看到它是如何绕过网络服务器的。
    • @ElliotWoods 创建了问题#445 用于公开 CEF Web 服务器 API。
    • @ElliotWoods 第 70 行 (_OnResourceResponse) 是用于读取/修改 Web 内容的最终函数。要从磁盘读取内容,您必须修改 ResourceHandler 类(ProcessRequest、GetResponseHeaders、ReadResponse)。去掉只在发出 http 请求时才需要的 WebRequestClient。
    • @ElliotWoods 使用资源处理程序从磁盘读取时,url 可能类似于:http://filesystem/c/myapp/file.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2015-02-05
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    相关资源
    最近更新 更多