我在自定义 Next.js 服务器上运行前端客户端,该服务器使用 apollo 客户端获取数据。我的后端是使用 express-session 的带有棱镜的 graphql-yoga。
我在为我的客户端和后端选择正确的 CORS 设置时遇到问题,因此可以在浏览器中正确设置 cookie,尤其是在 heroku 上。
目前我正在从客户端发送 graphql 请求,apollo-client 有选项,
credentials: "include"但也尝试"same-origin"过没有更好的结果。
我可以在Set-Cookie标头和 devTools/application/cookies 中看到后端响应的 cookie 客户端。但是这个 cookie 对浏览器是透明的,刷新时会丢失。
话虽如此,我还尝试实施一些后件,apollo client因为apolloLink这会拦截 cookie,response.headers但它是空的。
到目前为止,我正在考虑采用这两种解决问题的途径。
(我只是在实现 CORS,因为浏览器会阻止在没有它的情况下获取数据。)
客户
客户端的 ApolloClient 配置:
const httpLink = new HttpLink({
credentials: "include",
uri: BACKEND_ENDPOINT,
});
Run Code Online (Sandbox Code Playgroud)
客户端 CORS 使用和配置:
app
.prepare()
.then(() => {
const server = express()
.use(cors(corsOptions))
.options("*", cors(corsOptions))
.set("trust proxy", 1);
...here goes rest of …Run Code Online (Sandbox Code Playgroud)