2015-09-16 3 views
3

Я пытаюсь установить Relay и GraphQL с моим сервером Laravel. Я успешно установил Laravel для обслуживания GraphQL.Где вы помещаете токен CSRF в Relay/GraphQL?

В прошлом, чтобы сделать AJAX вызовы с помощью JQuery я добавил следующее к моему master.blade.php:

<meta name="csrf-token" content="{{ csrf_token() }}"> 

и нижеследующее моему main.js файл:

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

В настоящее время конечная точка GraphQL возвращает исключение несоответствия токенов. Мне кажется, что Relay должен передать csrf-токен на сервер так же, как jQuery.ajax. Куда он идет?

+0

Как вы используете ретранслятор с графиком-ларавелем? Я думаю, что он должен быть совместим с Relay. открыл проблему https://github.com/Folkloreatelier/laravel-graphql/issues/9 –

ответ

6

Настройка сетевого уровня для добавления заголовков к каждому запросу:

Relay.injectNetworkLayer(
    new Relay.DefaultNetworkLayer('/graphql', { 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'), 
    }, 
    }) 
); 

Второй аргумент Relay.DefaultNetworkLayer получает передавалось к init аргумента fetch(input, init). См. Relay Network Layer Guide для получения дополнительной информации.

+0

Спасибо! Так легко! Я застрял, думая, что мне нужно захватить dom attr («контент») без jQuery. – RichardForrester

+2

Если вы вообще не хотите использовать jQuery, вы можете получить токен, используя 'document.querySelector ('meta [name =" csrf-token "]'). GetAttribute ('content')' –