Приветствую!
Не так давно начал пробовать SPA на React. Связывать решил через GraphQL, т.к. очень понравились его возможности, по сравнению с REST API. Для Django использую библиотеку graphene-django для работы с GraphQL. Для Reacta - Relay. Итоговый стек получился такой: React - Relay - {GraphQL API} - Graphene - Django. Материалы именно по этому кейсу весьма скудные, многое приходилось додумывать самостоятельно.
Но меня волнует пока что только один вопрос:
Как получить CSRF на клиенте? GraphQL все взаимодействие строит на POST запросах. А Django, как известно, не принимает POST запрос без CSRF. Как включить CSRF в каждый запрос - это понятно. Вопрос в том, как же его получить для начала?
Я могу разрезолвить специальный запрос, который возвращает CSRF токен, но вот проблема:
1) React Relay пошлет на сервер запрос чтобы получить CSRF токен
2) Запрос идет методом POST
3) Django не принимает запрос, потому что нет CSRF
4) Круг замыкается
Кто то уже работал с React через GraphQL? Есть способы решения? Нагуглить удалось только обходной путь с отключением CSRF для API GraphQL:
url(r'^graphql', csrf_exempt(GraphQLView.as_view(graphiql=True)))
но это явно не лучший выход.