我使用 Apollo Server 和 Apollo Client 创建了一个简单的 graphQL 聊天。
它还使用会话 cookie,所以我使用 npm 包初始化服务器,cors
如下所示:
app.use(
cors({
credentials: true,
origin: "http://localhost:3000"
})
);
在客户端,我使用 apollo 客户端并创建一个像这样的 http 链接:
const httpLink = new HttpLink({
uri: "http://localhost:4000/graphql",
credentials: "include"
});
因此,我包含凭据,并且服务器具有我的客户端的来源(确实是http://localhost:3000 - create-react-app 默认值)。
当我想运行查询时,我在浏览器控制台中收到此错误:
从源“ http://localhost:3000 ”获取“ http://localhost:4000/graphql ”的访问已被 CORS 策略阻止:响应中“Access-Control-Allow-Origin”标头的值当请求的凭据模式为“包含”时,不得为通配符“*”。
为什么它说响应头有一个通配符 * 集,但在 cors 上我设置了一个特定的来源,所以它不应该是一个通配符对吗?
伙计们,我在这里错过了什么?我当然也重新启动了两台服务器。
当我这样设置客户端时:
const httpLink = new HttpLink({
uri: "http://localhost:4000/graphql",
credentials: "same-origin"
});
我没有从 cors 收到错误消息,但我没有从服务器收到 cookie。Cookie 有效是因为在 graphQL Playground 上一切都按预期进行。
如果想看完整代码:https : //github.com/SelfDevTV/graphql-simple-chat