laravel - 您将 CSRF token 放在 Relay/GraphQL 中的什么位置?

标签 laravel reactjs csrf graphql relayjs

我正在尝试使用我的 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 端点当前返回 token 不匹配异常。在我看来,Relay 需要以与 jQuery.ajax 类似的方式将 csrf-token 传递到服务器。它去哪儿了?

最佳答案

配置网络层以将 header 附加到每个请求:

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

Relay.DefaultNetworkLayer 的第二个参数传递给 fetch(input, init)init 参数。请参阅Relay Network Layer Guide了解更多信息。

关于laravel - 您将 CSRF token 放在 Relay/GraphQL 中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32618424/

相关文章:

laravel - Laravel 4 beta3 和 beta4 之间的 Input::json() 函数的更改

集群环境下的Laravel调度

javascript - 如何创建每行 3 个元素的水平网格

javascript - React 图像轮播 |特色图片模态

php - 如何通过 Laravel 更新外部样式表中的 CSS 属性?

github - 'ssh' 未被识别为内部或外部命令

javascript - chrome.enterprise.deviceAttributes.getDirectoryDe​​viceId 不适用于已注册的 chromebox

java - 如何使用 spring boot 在 html 元标记中获取 csrf token

elixir - Phoenix CSRF token 不匹配

laravel - 为什么 _token 和 XSRF-TOKEN 在 Laravel 中不同?