如何将 cookie 从 apollo-server 传递到 apollo-clenet
Posted
技术标签:
【中文标题】如何将 cookie 从 apollo-server 传递到 apollo-clenet【英文标题】:How to pass cookie from apollo-server to 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 是空的?
【问题讨论】:
【参考方案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 天来解决这个问题...以上是关于如何将 cookie 从 apollo-server 传递到 apollo-clenet的主要内容,如果未能解决你的问题,请参考以下文章
我如何通过 nodejs 通过 apollo-server 从服务器获取所有数据
Apollo-Server,如何与 SailsJS 一起使用?
将 JWT RefreshToken 作为 Set-Cookie 发送