8

我正在 GraphQL Playground 中测试一些实现,我想在其中发送一个特定的 cookie,以便我可以在我的解析器中获取它。我在操场上使用内置的 Http Headers 窗格:

在此处输入图像描述

但是,当我添加名为Cookieor的标头cookie时,当我尝试 console.log 在我的解析器中时它不会显示。所有其他自定义 Http 标头都显示没有问题。

在此处输入图像描述

如上面的屏幕截图所示,出现了 testheader,但没有显示 cookie 标头。我正在使用cookieParser,这可能是cookie标题消失的原因,但我不确定。这是我的 console.log 部分的屏幕截图:

在此处输入图像描述

当我尝试 console.log 时req.cookies,我什么也得不到,这是使用 cookieParser 的好处之一。

在此处输入图像描述 在此处输入图像描述

我的 ApolloServer 实现如下:

const server = new ApolloServer({
  typeDefs: schema
  resolvers,
  dataSources: () => ({
    // ...
  }),
  context: ({req, res}) => ({
    models,
    session: req.session,
    req,
    res
  }),
  // ... and the rest is not important
});

创建一个“自定义” cookie 标头可以解决问题,例如somecookie: <key>=<value>,但我认为这不是最佳做法,并且宁愿避免这种情况。我希望有人知道为什么我的 cookieheader没有出现,或者我能做些什么让它出现?

4

1 回答 1

19

经过广泛的搜索、文档阅读等。我想出了如何使这项工作。

在位于窗口右上角的 GraphQL 游乐场设置(齿轮图标)中:

graphql 游乐场中的齿轮图标

我将行更改"request.credentials""include"并保存 UI 中的设置。在这里阅读更多。此行直接取自文档:

'request.credentials': 'omit', // possible values: 'omit', 'include', 'same-origin'

然后,我打开了开发人员工具窗口(通常是 F12),转到选项卡Application。在这里,我只是添加了一个 cookie,如屏幕截图所示。该 cookie 是与我的请求一起发送的。

开发人员工具应用程序选项卡

于 2021-06-28T14:17:31.207 回答