Django-ckeditor-5 не может загрузить файл на локальный сервер и не показывает предварительный просмотр ссылки на youtube
Я успешно отображаю ckeditor5 с помощью пакета django-ckeditor-5, но не могу загрузить изображения и не могу показать видео youtube на странице результатов.
Вот что я получаю в консоли бэкенда и в браузере.
Forbidden (CSRF token from the 'X-Csrftoken' HTTP header has incorrect length.): /ckeditor5/image_upload/
WARNING 2024-04-08 09:40:09,120 log 10 135125224380160 Forbidden (CSRF token from the 'X-Csrftoken' HTTP header has incorrect length.): /ckeditor5/image_upload/
INFO: 172.19.0.1:54724 - "POST /ckeditor5/image_upload/ HTTP/1.1" 403 Forbidden
Это точно про токен csrf, но он должен обрабатываться пакетом. Когда я смотрел учебники и блоги на youtube, никто не настраивал csrf-токен.
Вот некоторая информация о моем проекте.
Я начал проект с cookiecutter-django, запущенного с помощью docker. Я настроил параметры с помощью tailwindcss/flowbite. frontend pipeline с помощью webpack.
Пока я писал это, я нашел ответ на вопрос о показе ссылки youtube на подробной странице, а мой друг помог мне решить проблему с загрузкой изображений.
Во-первых, чтобы показать ссылку youtube на детальной странице, вы должны добавить следующее в настройках CKEDITOR_5_CONFIGS
"extends": {
....
"mediaEmbed": {"previewsInData": "true"},
},
Я нашел этот ответ в выпуске github
Что касается проблемы с загрузкой, в основном, cookiecutter-django имеет настройки по умолчанию, как показано ниже, для части безопасности.
# SECURITY
# ------------------------------------------------------------------------------
# https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-httponly
SESSION_COOKIE_HTTPONLY = True
# https://docs.djangoproject.com/en/dev/ref/settings/#csrf-cookie-httponly
CSRF_COOKIE_HTTPONLY = True
# https://docs.djangoproject.com/en/dev/ref/settings/#x-frame-options
X_FRAME_OPTIONS = "DENY"
Если я изменю CSRF_COOKIE_HTTPONLY на True, загрузка изображений проходит успешно.
Теперь возникает другой вопрос. Можно ли сделать его ложным? Не возникнет ли серьезных проблем с безопасностью?