作者:真的长茎使人愁 | 来源:互联网 | 2023-08-29 09:21
我正在GraphQLPlayground中测试一些实现,我想在其中发送一个特定的cookie,以便我可以在我的解析器中获取它。我在操场上使用内置的HttpHeaders窗格:
我正在 GraphQL Playground 中测试一些实现,我想在其中发送一个特定的 COOKIE,以便我可以在我的解析器中获取它。我在操场上使用内置的 Http Headers 窗格:
但是,当我添加名为COOKIE
or 的标头COOKIE
时,当我尝试在解析器中 console.log 时它不会显示。所有其他自定义 Http 标头都没有问题。
如上面的屏幕截图所示,出现了测试头,但没有出现 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: =
,但我认为这不是最佳做法,并且宁愿避免这种情况。我希望有人知道为什么我的 COOKIEheader
没有出现,或者我可以做些什么让它出现?
回答
经过广泛的搜索、文档阅读等。我想出了如何使这项工作顺利进行。
在位于窗口右上角的 GraphQL playground 设置(齿轮图标)中:
我将行更改"request.credentials"
为"include"
并保存 UI 中的设置。在这里阅读更多。这一行直接取自文档:
'request.credentials': 'omit', // possible values: 'omit', 'include', 'same-origin'
然后,我打开开发人员工具窗口(通常是 F12),转到选项卡Application
。在这里,我只是添加了一个 COOKIE,如屏幕截图所示。该 COOKIE 与我的请求一起发送。