Tastypie csrftoken не установлен в режиме инкогнито

Я использую вызовы ajax против тонкого слоя вкусного пирога в CRUD (используя токены csrf). Все работает как шарм, пока я не запустил сайт в режиме инкогнито Chrome. Я продолжаю получать 401-е на CUD-запросах.

Просматривая куки-файлы запроса, я обнаружил, что куки-файл sessionid установлен, а куки-файл csrftoken - нет (он установлен правильно, если я работаю в обычном режиме).

В моем settings.py Я имею:

MIDDLEWARE_CLASSES = (
  'django.middleware.common.CommonMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
 )

Кто-нибудь сталкивался с этой проблемой и может спасти меня здесь?

Большое спасибо, Юрген

1 ответ

Решение

Я нашел причину того, что cookie не был установлен в файле промежуточного программного обеспечения Django csrf.py, Код ниже if активируется в режиме инкогнито, не позволяя установить cookie:

    if not request.META.get("CSRF_COOKIE_USED", False):
        return response

Мой обходной путь - установить это значение для моих ModelResources в tastypie's. api.py подать вручную:

class MyModelResource( ModelResource ) :

    [..]

    def wrap_view(self, view):
         def wrapper(request, *args, **kwargs):
             request.META["CSRF_COOKIE_USED"] = True
             wrapped_view = super(MyModelResource, self).wrap_view(view)
             return wrapped_view(request, *args, **kwargs)
         return wrapper
Другие вопросы по тегам