【问题标题】:How to enable external file linking in CefPython?如何在 CefPython 中启用外部文件链接?
【发布时间】:2019-06-01 14:28:39
【问题描述】:

我正在开发一个 CEFPython 应用程序,该应用程序需要我包含一些外部文件,如 JS 或 CSS 库。但是 HTML 文件中提到的任何外部路径(指同一文件夹中存在的外部库和在线资源 URL)似乎是不可接受的,我确定缺少一个启用外部文件喜欢的标志,但无法弄清楚是哪个。以下是我的主要功能的代码:

def main():
sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
# To change user agent use either "product_version"
# or "user_agent" options. Explained in Tutorial in
# "Change user agent string" section.
settings = {
    # "web_security_disabled": True,
    # "user_agent": "MyAgent/20.00 MyProduct/10.00",

}
cef.Initialize(settings=settings)
browser = cef.CreateBrowserSync(url=html_to_data_uri(HTML_code),
                                window_title="Demo Program")
set_javascript_bindings(browser)
cef.MessageLoop()
cef.Shutdown()

【问题讨论】:

    标签: python chromium-embedded cefpython


    【解决方案1】:

    “web_security_disabled”设置必须在浏览器创建中传递,而不是在 cef 初始化中。

    例子:

    settings = {
        "web_security_disabled": True,
    }
    
    
    def launcher(url):
        sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
        cef.Initialize()
        cef.CreateBrowserSync(url=url, window_title="my title", settings=settings)
        cef.MessageLoop()
        cef.Shutdown()
    

    【讨论】:

      【解决方案2】:

      您不能混合来自不同来源的脚本,请参阅: https://en.wikipedia.org/wiki/Same-origin_policy

      有 --disable-web-security 开关可以试试。

      如果这不起作用,请使用“http”url 而不是 data uri。您可以使用 Python 运行内部 Web 服务器。您还可以实现 ResourceHandler 并提供 http 内容,而无需运行 Web 服务器,但是正确实现 ResourceHandler 是一项复杂的任务。

      【讨论】:

      • 我已经尝试过 --disable-web-security 开关,但是在我的实现方案中传递命令行参数似乎不可行。此外,我的问题中的外部资源包括同一目录中的库文件以及在线资源(我也在问题中更新了相同的资源)。您还可以分享“http”url使用和资源处理程序实现的代码sn-p或文档参考。
      • 参见 ResourceHandler 的文档。你也可以试试 file:// 协议和 BrowserSettings.file_access_from_file_urls_alloweduniversal_access_from_file_urls_allowed 选项。
      • 我尝试在设置对象中传递上述设置,如问题中所述,但它给出了错误,您能否分享一个传递浏览器设置的示例?
      • @OshoParth 请参阅教程、文档和示例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多