【问题标题】:How to pass cookie from apollo-server to apollo-clenet如何将 cookie 从 apollo-server 传递到 apollo-clenet
【发布时间】:2020-03-20 03:04:26
【问题描述】:

变异

Mutation: {
  signUp: (_, { res }) => {
    try {
      res.cookie("jwt", "token", {
        httpOnly: true
      });
      return "Amasia";
    } catch (error) {
      return "error";
    }
  };
}

Apollo-clenet-react

const [addTodo, { loading, error, data }] = useMutation(gql);

  const [formSignUp, setFormSignUp] = useState({
    lastName: '',
    firstName: '',
    password: '',
    email: '',
  });

  const change = e => {
    const { value, name } = e.target;
    setFormSignUp({ ...formSignUp, [name]: value });
  };

当我从 react 提出请求时。 这是我从服务器得到的答案。

1)数据 {"data": {"signUp": "Amasia"}}

2) 网络

应用程序

好吧,当我查看应用程序 Cookie 时,它​​是空的。

我做错了什么为什么 cookie 是空的?

【问题讨论】:

    标签: node.js cookies graphql react-apollo apollo-server


    【解决方案1】:

    apollo-client 和 apollo-server 设置中的问题 (apollo-cookie)。

    我是这样设置的。

    阿波罗客户端

    import { render } from 'react-dom';
    import React, { Suspense } from 'react';
    import { ApolloClient } from 'apollo-client'
    import { ApolloProvider } from 'react-apollo';
    import { InMemoryCache } from 'apollo-cache-inmemory';
    import { createHttpLink } from 'apollo-link-http';
    import './i18n';
    
    import Loading from './component/loading';
    import RouteProj from './router';
    
    const link = createHttpLink({
      uri: 'http://localhost:8000/graphql',
      credentials: 'include'
    });
    
    const client = new ApolloClient({
      cache: new InMemoryCache(),
      link,
    });
    
    
    render(
      <ApolloProvider client={client}>
        <Suspense fallback={<Loading />}>
          <RouteProj/>
        </Suspense>
      </ApolloProvider>,
      document.getElementById('root'),
    );
    

    阿波罗服务器

    import cors from "cors";
    import express from "express";
    import { ApolloServer } from "apollo-server-express";
    import mongoose from "mongoose";
    
    import schema from "./schema";
    import resolvers from "./resolvers";
    import models from "./models";
    
      const app = express();
    
      var corsOptions = {
        origin: "http://localhost:3000",
        credentials: true
      };
      app.use(cors(corsOptions));
    
      const server = new ApolloServer({
        typeDefs: schema,
        resolvers,
        context: ({ res }) => ({
          res
        })
      });
    
      server.applyMiddleware({ app, path: "/graphql", cors: false });
      app.listen({ port: 8000 });
    

    【讨论】:

    • 非常感谢!!!我已经尝试了 2 天来解决这个问题...
    猜你喜欢
    • 2022-11-10
    • 2019-12-27
    • 2022-06-30
    • 2021-07-31
    • 2021-09-21
    • 2019-07-27
    • 2020-06-30
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多