简体   繁体   English

如何将 cookie 从 apollo-server 传递到 apollo-clenet

[英]How to pass cookie from apollo-server to apollo-clenet

Mutation突变

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

Apollo-clenet-react Apollo-clenet-反应

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 });
  };

When i make a request from react.当我从反应中提出请求时。 Here is the answer I get from the server.这是我从服务器得到的答案。

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

2) Network 2)网络在此处输入图片说明

Application应用

Well when I look in Application Cookies, it is empty.好吧,当我查看 Application Cookies 时,它是空的。 在此处输入图片说明

What am I doing wrong Why are cookies empty?我做错了什么 为什么 cookie 是空的?

problem in apollo-client and apollo-server settings ( apollo-cookie ). apollo-client 和 apollo-server 设置中的问题 ( apollo-cookie )。

I set up like that.我是这样设置的。

apollo-client阿波罗客户端

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'),
);

apollo-server阿波罗服务器

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 });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM