Приложение Cefpython с файлами html/js в локальной файловой системе
Я пытаюсь сделать гибридное приложение python-js с cefpython.
Я бы хотел:
- Файлы JS и HTML, локальные для приложения cef python (например, в./html,./js и т. Д.)
- Загрузите один из файлов HTML в качестве начальной страницы
- Избегайте любых проблем CORS с файлами, обращающимися друг к другу (например, между каталогами)
Кажется, что следующее работает для загрузки первой страницы:
browser = cef.CreateBrowserSync(url='file:///html/index.html',
window_title="Rulr 2.0")
Однако затем я столкнулся с проблемами CORS. Нужно ли мне также запускать веб-сервер? Или есть эффективный шаблон для работы с локальными файлами?
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 для загрузки различного контента, он должен быть реализован в выпуске #418 (PR приветствуется): https://github.com/cztomczak/cefpython/issues/418
Об обработчике схемы см. В выпуске № 50: https://github.com/cztomczak/cefpython/issues/50
Кроме того, есть также GetResourceResponseFilter в восходящем CEF, который является более простой опцией, чем обработчик ресурсов, для реализации через выпуск № 229: https://github.com/cztomczak/cefpython/issues/229
Вы также можете запустить внутренний веб-сервер внутри вашего приложения (это легко сделать с помощью Python) и обслуживать файлы таким образом. Upstream CEF также имеет встроенную функциональность веб-сервера, однако я не думаю, что это проявится в cefpython, поскольку в Python уже легко настроить веб-сервер.