Найти - Пользователи
Полная версия: Flash HttpRequest & CSRF verification failed
Начало » Django » Flash HttpRequest & CSRF verification failed
1
PyCraft
Не получается делать запросы из Flash(AS3) к Django 1.2.
Flash находится в том же домене, в каталоге статики.
Авторизация, загрузка прочих страниц и загрузка страницы с флэшем выполняются нормально.

При POST запросе с параметрами из флэша
AS3 выдает Error #2032 (ошибка потока), а Django - 403 Forbiden “CSRF verification failed” и не пропускает до вьюхи.

в settings.py Подключено
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',

'django.contrib.csrf.middleware.CsrfMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',
'multilingual.middleware.DefaultLanguageMiddleware',
'django.middleware.locale.LocaleMiddleware',
)
во view.py csrf_protect подключен, но временно не используется
from django.views.decorators.csrf import csrf_protect
#@csrf_protect
#@login_required
def flash_handler(request):
test=request.POST.get('test')
return HttpResponse(test,mimetype='text/html')
Если временно отключить CsrfMiddleware то доступ из флэша работает даже из другого домена, но зато не работает сам сайт(авторизация), с той же ошибкой 403 “CSRF verification failed”. Конечно, лучше настроить чтобы работала защита, чем её отключать.

Чего ему не хватает?
slav0nic
попробуй django.middleware.csrf.get_token() получать и отправлять вместе с POST запросом
либо заверни в @csrf_exempt
PyCraft
slav0nic
попробуй django.middleware.csrf.get_token() получать и отправлять вместе с POST запросом
либо заверни в @csrf_exempt
@csrf_exempt - помогло. Попробую token передать, только как? В заголовке?

django.middleware.csrf.get_token() - это питонья функция, как ей во флэше пользоваться?.
slav0nic
я не знаком с флешем, но наверно можно ж как-то передать из питона, банальным гетом и обратно в POST запросе в переменной csrfmiddlewaretoken, но надо ли оно тебе?)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB