微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GraphQL 游乐场 - 将 Cookie 作为 Http 标头“消失”发送

如何解决GraphQL 游乐场 - 将 Cookie 作为 Http 标头“消失”发送

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

enter image description here

但是,当我添加名为 Cookiecookie 的标头时,当我尝试在我的解析器中 console.log 时它不会显示。所有其他自定义 Http 标头均正常显示

enter image description here

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

enter image description here

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

enter image description here

enter image description here

我的 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>,但我认为这不是最佳做法,并且希望避免这种情况。我希望有人知道为什么我的 cookie header 没有出现,或者我可以做些什么让它出现?

解决方法

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

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

Gear icon in graphql playground

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

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

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

Developer tools application tab

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。