1

我正在开发一个 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()
4

2 回答 2

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()
于 2021-06-02T08:13:35.197 回答
0

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

您可以尝试使用 --disable-web-security 开关。

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

于 2019-06-01T18:21:18.173 回答