csrf cookie not set
Я знаю, что этот вопрос довольно популярный, прежде чем задавать его, я изучил все предыдущие вопросы и ответы на них, но так и не нашел решение для себя.
Моя проблема в том, что я пытаюсь удалить полностью проверку csrftoken в своем приложении. Я понимаю уязвимости, открывающиеся в данном случае, но это для меня не критично. Во время разработки никаких ошибок на моем компе в связи с csrftoken не происходит, я разрабатываю на windows, но при запуске его на сервере apache linux эта ошибка появляется и только при редактировании уже существующей записи (при создании новой, проблем нет), мне трудно представить причину, по которой это происходит только на сервере apache linux, перенос я осуществляю с помощью docker.
К удалению csrftoken из своего приложения я пришел по той же самой причине, на компьютере на windows, на котором я разрабатывал приложение, ошибок при включенном csrftoken не происходило, но при переносе на сервер apache linux, формы, использующие передачу данных с помощью js файлов, также выдавали ошибку 403.
Settings
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
]
CSRF_COOKIE_SECURE = False
CSRF_COOKIE_HTTPONLY = False
Во всех формах html я закомментировал csrf_token
{# {% csrf_token %}#}
В файлах js я закомментировал headers
// headers: {'X-CSRFToken': document.querySelector('[name=csrfmiddlewaretoken]').value},
В атрибут формы добавил action=""
Я уже очистил файл cookie, использовал другой браузер, но ошибка так и остается. В браузере Edge дополнительно почистил socket и dns с помощью следующей команды: edge://net-internals/#sockets.
Дополнительно я специально сделал ошибку в программе, для того чтобы django сформировал отчет, в результате я обнаружил на сервере apache linux следующую информацию (отличительной особенностью является то, что эта информация отсутствует на локальной машине, на которой я разрабатываю проект, на windows):
CSRF_COOKIE = 'ijijj34j24345678x6gfddsfvgnkjnhkhkhfd6'
CSRF_COOKIE_USED = True
Я попытался передать указанный параметр CSRF_COOKIE_USED в файле settings.py:
CSRF_COOKIE_USED = False
но это не привело к желаемому результату.
Я попробовал добавить декоратор, но это не привело к желаемому результату:
class EventCard(CreateView):
template_name = 'main/event_card.html'
@csrf_exempt
def get(self, request, Id_Events=None, *args, **kwargs):
return render(request, self.template_name)
Ответы (1 шт):
Моя ошибка заключалась в том, что при включенной сессии происходит неявное добавление csrf токена, даже когда он везде выключен.
Для решения задачи, я использовал следующий ответ: https://stackoverflow.com/questions/16458166/how-to-disable-djangos-csrf-validation/70732475#70732475