【问题标题】:CEFPython app - How to call JSON file from HTMLCEFPython 应用程序 - 如何从 HTML 调用 JSON 文件
【发布时间】:2019-06-10 17:48:32
【问题描述】:

我正在使用 CEF 迈出第一步。我知道一些 Python,所以我正在使用 CEFPython。我正在制作一个简单的应用程序,使用 Python 处理来自本地数据库的一些数据,然后将这些数据写入 JSON 文件。目标是最终使用 HTML、JS 和 CSS 很好地显示 JSON 数据。

我开始修改 Github 存储库中的 tutorial.py 文件。首先,我将 HTML 代码放在一个变量中,然后我是这样读取的:

    HTML_code = open("test.html", "r").read()

然后我创建一个浏览器:

    browser = cef.CreateBrowserSync(url=html_to_data_uri(HTML_code),
                                settings = browser_settings)

现在,在 HTML 的标题中,我这样调用 JSON 文件:

  <script src="test.json"></script>

我可以在 Chrome 上完美呈现网站以及 JSON 文件。但是使用 CEFPython,我无法以这种方式加载 JSON 文件。我猜可能存在一些 CORS 问题。

我尝试修改浏览器和 cef.Initialize 设置,如this 回答中的建议。但这些变化似乎没有任何效果。这就是我尝试设置它们的方式:

    switches = {
    "disable-web-security": ""
}

browser_settings = {
    "file_access_from_file_urls_allowed": "",
    "universal_access_from_file_urls_allowed": "",
    "web_security_disabled": ""
}

cef.Initialize(settings=settings, switches=switches)
set_global_handler()
HTML_code = open("test.html", "r").read()
browser = cef.CreateBrowserSync(url=html_to_data_uri(HTML_code),
                                settings = browser_settings)

所有文件(python 脚本、HTML 和 JSON)都在同一个文件夹中。我正在使用该文件夹上终端中的“python test.py”来运行它。我不想使用完整路径来调用文件,因为该程序将被其他不具有相同路径的人使用。

如何正确加载 JSON 文件?

【问题讨论】:

    标签: python html json chromium-embedded cefpython


    【解决方案1】:

    您正在使用data URI protocol 和“test.json”使用文件协议加载网页。不允许混合协议。两者都使用文件协议或两者都使用数据 uri (&lt;script src="data:text/javascript..."&gt;&lt;/script&gt;)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      相关资源
      最近更新 更多