2016-08-09 5 views
3

Я разрабатываю приложение, которое является интерфейсом API AngularJS, который обращается к API-интерфейсу backend, разработанному в Django Rest Framework.Проверка подлинности CSRF не работает на Django с использованием HTTPS

The frontend is on the domain: https://front.bluemix.net 
And my backend is on the domain: https://back.bluemix.net 

У меня возникли проблемы с запросом API интерфейсов API-интерфейсов. Ошибка заключается в следующем:

Error: CSRF Failed: Referer checking failed - https://front.bluemix.net does not match any trusted origins. 

Я использую CORS и я уже включены следующие строки в моем settings.py в бэкэнд API Django:

ALLOWED_HOSTS = [] 

CORS_ALLOW_CREDENTIALS = True 

CORS_ORIGIN_ALLOW_ALL = True 

CORS_ALLOW_CREDENTIALS = True 


CSRF_TRUSTED_ORIGINS = ['https://front.bluemix.net/'] 

CORS_REPLACE_HTTPS_REFERER = True 

CSRF_COOKIE_DOMAIN = 'bluemix.net' 

CORS_ORIGIN_WHITELIST = (
    'https://front.bluemix.net/', 
    'front.bluemix.net', 
    'bluemix.net', 
) 

Любой знает, как решить эту проблему?

+0

ли вы выполнить все шаги в https://github.com/ottoyiu/django-cors-headers/? – wilcus

+0

Да, я сделал! Ошибка такая же ... – ccr

+0

Возможно, ваша версия django не поддерживается. Попробуйте эту вилку https://github.com/zestedesavoir/django-cors-middleware – wilcus

ответ

9

Ваша установка CSRF_TRUSTED_ORIGINS неправильно - изменить его:

CSRF_TRUSTED_ORIGINS = ['front.bluemix.net'] 

Установка требует hostname only, а не схема. В любом случае схема избыточна, потому что параметр имеет какой-либо эффект при подключении через HTTPS.

Вы, вероятно, также нужно положить что-то в ALLOWED_HOSTS ...

+0

Спасибо, проблема была в CSRF_TRUSTED_ORIGINS. Теперь это работает как шарм :) – ccr

Смежные вопросы