Блог Рагимова Романа

 

Решение проблемы «Ошибка 403» в Pingdjack

Во время работы с библиотекой pingdjack от Ивана Сагалаева, обнаружилась досадная особенность, не отраженная в документации, но доставившая мне немало хлопот.

Ввиду того, что в последних версиях django по умолчанию включена защита от CSRF, система со включенным CSRFMiddleware выдает ошибку 403. Решить это можно двумя путями:

Во втором варианте в файл server.py требуется добавить следующее:

# в начале файла
from django.views.decorators.csrf import csrf_exempt

# Добавить @csrf_exempt между @require_POST и def server_view
@require_POST
@csrf_exempt 
def server_view(request, root='/'):

Второй метод выглядит предпочтительнее, т.к. маловероятно, что пингующий сайт вдруг, внезапно, возьмет откуда-то требуемый CSRF-токен, а следовательно CSRF защита для данного участка кода бессмысленна.

Ctrl