Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 12, 2010 17:16:05

PyCraft
От:
Зарегистрирован: 2008-05-23
Сообщения: 81
Репутация: +  0  -
Профиль   Отправить e-mail  

Flash HttpRequest & CSRF verification failed

Не получается делать запросы из 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”. Конечно, лучше настроить чтобы работала защита, чем её отключать.

Чего ему не хватает?



Отредактировано (Апрель 12, 2010 18:37:10)

Офлайн

#2 Апрель 12, 2010 19:30:25

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Flash HttpRequest & CSRF verification failed

попробуй django.middleware.csrf.get_token() получать и отправлять вместе с POST запросом
либо заверни в @csrf_exempt

Офлайн

#3 Апрель 12, 2010 19:37:06

PyCraft
От:
Зарегистрирован: 2008-05-23
Сообщения: 81
Репутация: +  0  -
Профиль   Отправить e-mail  

Flash HttpRequest & CSRF verification failed

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

django.middleware.csrf.get_token() - это питонья функция, как ей во флэше пользоваться?.



Отредактировано (Апрель 12, 2010 19:39:34)

Офлайн

#4 Апрель 13, 2010 09:56:29

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Flash HttpRequest & CSRF verification failed

я не знаком с флешем, но наверно можно ж как-то передать из питона, банальным гетом и обратно в POST запросе в переменной csrfmiddlewaretoken, но надо ли оно тебе?)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version