【问题标题】:Allowing Cookies in the Apollo GraphQL playground (version 3)在 Apollo GraphQL 游乐场(版本 3)中允许使用 Cookie
【发布时间】:2021-11-30 18:55:38
【问题描述】:

据阿波罗docs

如果您的服务器使用 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 没有显示错误。关闭 Allow Cookies 开关可以解决问题,但会禁用 cookie 功能。

我该如何解决这个问题?

【问题讨论】:

    标签: cookies graphql apollo-server graphql-playground


    【解决方案1】:

    如果您使用的是 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,
        },
      });
    

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 2020-01-05
      • 2021-09-07
      • 2021-04-03
      • 2021-12-05
      • 2021-05-13
      • 2021-11-01
      • 2019-12-03
      • 1970-01-01
      相关资源
      最近更新 更多