【问题标题】:How do I get cookie from apollo graphql resolver?如何从 apollo graphql 解析器获取 cookie?
【发布时间】:2020-09-11 00:18:01
【问题描述】:

我可以在客户端设置 cookie,但我不知道如何从服务器 reslover (apollo graphql.) 获取 cookie。

// 解析器.js

export const resolvers = {
  Query: {
    async getSinglePost(_, args, context) {

        // "context.req.headers.cookies" are empty. d
        // Even if setting "credentials: 'include' " in creating Apollo client chche.   
    },
  },

// apolloClient.js

new ApolloClient({
    ssrMode: Boolean(ctx),
    link: authLink.concat(new HttpLink({
      uri: 'http://localhost:4000/graphql', // Server URL (must be absolute)
      credentials: 'same-origin', // Additional fetch() options like `credentials` or `headers`
      fetch,
    })),
    cache: new InMemoryCache({ fragmentMatcher }).restore(initialState),
    credentials: 'include',
  })

我错过了什么吗?

【问题讨论】:

    标签: graphql apollo apollo-client


    【解决方案1】:

    我认为这与 Apollo Server 本身无关,因为假设您使用 express,req 对象会直接传递到上下文中,并且根本不会被 Apollo 修改。

    相反,如果您解析 cookie,我会检查。为此,建议使用cookie-parser lib 并将其作为中间件运行。

    另外,cookie 对象应该在req.cookies(而不是req.headers.cookies

    【讨论】:

    • cookieParser 中间件已设置...我错过了一些东西...我不知道它是什么。
    • 我的 graphql 服务器在端口 4000 上运行,而我的 nextjs 客户端在端口 3000 上运行。我可以使用快速路由器获取客户端 cookie,但无法在 graphql 解析器中获取它。
    • 似乎是 Apollo 的问题:github.com/apollographql/apollo-server/issues/1791。 @Juntae 找到任何解决方法?
    • 我从 apollo-server 切换到 apollo-server-express 并使用 cookie 解析器中间件配置了我自己的 Express 实例。只有这样它才起作用。我现在可以使用 context.req.cookies 访问同域 cookie
    猜你喜欢
    • 2020-07-26
    • 2021-01-25
    • 2017-12-07
    • 2020-03-27
    • 1970-01-01
    • 2019-07-15
    • 2021-09-25
    • 2023-03-13
    • 2020-01-28
    相关资源
    最近更新 更多