1

根据阿波罗文档

如果您的服务器使用 cookie 进行身份验证,您可以将端点配置为与https://studio.apollographql.com共享这些 cookie 。要进行此设置,您的 cookie 值必须包含SameSite=None; Secure. 此外,这些 CORS 标头必须存在于您的服务器对 Studio 的响应中:

Access-Control-Allow-Origin: https://studio.apollographql.com
Access-Control-Allow-Credentials: true

我已经完成了那里提到的所有事情。我使用的是 express,所以我使用了 cors 中间件来设置标题:

 app.use(
    cors({
      credentials: true,
      origin: "https://studio.apollographql.com",
    })
  );

但是,每当我在操场上打开“允许 Cookie”的开关时,状态都会变为红色(即“无法访问服务器”)。我的编辑器和 nodemon 没有显示错误。关闭允许 Cookie 切换可以解决问题,但会禁用 cookie 功能。

我该如何解决这个问题?

4

1 回答 1

4

如果您使用的是 cors 中间件,您可能需要将 apollo.applyMiddleware 中的 cors 设置为 false 并让您的 cors 中间件正常工作。

  app.use(
    cors({
      credentials: true,
      origin: "https://studio.apollographql.com",
    })
  );

...

  apolloServer.applyMiddleware({
    app,
    cors: false, 
  });

或者,您也可以使用 apollo-server 提供的 cors 选项。

  apolloServer.applyMiddleware({
    app,
    cors: {
      origin: 'https://studio.apollographql.com',
      credentials: true,
    },
  });
于 2021-10-14T18:54:15.607 回答