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