您将 CSRF 令牌放在 Relay/GraphQL 的什么位置?
Where do you put the CSRF token in Relay/GraphQL?
我正在尝试使用我的 Laravel 服务器设置 Relay 和 GraphQL。我已成功设置 Laravel 以服务 GraphQL。
过去,为了使用 jQuery 进行 ajax 调用,我在 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 需要以类似于 jQuery.ajax 的方式将 csrf-token 传递给服务器。它去了哪里?
配置您的网络层以将 headers 附加到每个请求:
Relay.injectNetworkLayer(
new Relay.DefaultNetworkLayer('/graphql', {
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
},
})
);
Relay.DefaultNetworkLayer
的第二个参数传递给 fetch(input, init)
. See the Relay Network Layer Guide 的 init
参数以获取更多信息。
我正在尝试使用我的 Laravel 服务器设置 Relay 和 GraphQL。我已成功设置 Laravel 以服务 GraphQL。
过去,为了使用 jQuery 进行 ajax 调用,我在 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 需要以类似于 jQuery.ajax 的方式将 csrf-token 传递给服务器。它去了哪里?
配置您的网络层以将 headers 附加到每个请求:
Relay.injectNetworkLayer(
new Relay.DefaultNetworkLayer('/graphql', {
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
},
})
);
Relay.DefaultNetworkLayer
的第二个参数传递给 fetch(input, init)
. See the Relay Network Layer Guide 的 init
参数以获取更多信息。