【问题标题】:GraphQL playground - sending Cookie as Http Header "disappears"GraphQL 游乐场 - 发送 Cookie 作为 Http Header “消失”
【发布时间】:2021-09-07 21:09:04
【问题描述】:

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

但是,当我添加名为 Cookiecookie 的标头时,当我尝试将其控制台记录到解析器中时,它不会显示。所有其他自定义 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>,但我认为这不是最佳做法,我宁愿避免这样做。我希望有人知道为什么我的 cookie header 没有出现,或者我可以做些什么让它出现?

【问题讨论】:

    标签: cookies graphql apollo graphql-playground restdatasource


    【解决方案1】:

    经过大量搜索、阅读文档等。我想出了如何使这项工作发挥作用。

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

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

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

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

    【讨论】:

    • 我也做了同样的事情,但是还是不行……
    • 它可以帮助我发送 HttpOnly cookie。谢谢!
    • 百万次辉煌?耶耶
    猜你喜欢
    • 2021-04-03
    • 2021-11-30
    • 2021-05-13
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2015-12-20
    相关资源
    最近更新 更多