Приложение CEFPython - Как вызвать файл JSON из HTML - PullRequest
0 голосов
/ 16 января 2019

Я делаю первые шаги, используя CEF. Я знаю немного Python, поэтому я использую CEFPython. Я делаю простое приложение, обрабатывающее некоторые данные из локальной БД с помощью Python, а затем записываю эти данные в файл JSON. Цель состоит в том, чтобы наконец-то красиво отобразить данные JSON с использованием HTML, JS и CSS.

Я начал изменять файл tutorial.py из репозитория Github. Сначала я поместил 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>

Я могу прекрасно отобразить веб-сайт вместе с файлом JSON в Chrome. Но с CEFPython я не могу загрузить файл JSON таким образом. Я предполагаю, что могут быть некоторые проблемы с CORS.

Я попытался изменить настройки браузера и cef. Инициализировать настройки, как указано в этом ответе. Но эти изменения, похоже, не имеют никакого эффекта. Вот как я пытался их настроить:

    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?

1 Ответ

0 голосов
/ 17 января 2019

Вы загружаете веб-страницу, используя протокол данных URI и "test.json", используя файловый протокол. Не разрешается смешивать протоколы. Используйте либо файловый протокол для обоих, либо data uri для обоих (<script src="data:text/javascript..."></script>).

...