我有一些想要的功能,apollo-server
并花了一些时间将代码重构为它(以前使用express-graphql
)。现在唯一的问题是我的Web应用程序之间(使用apollo-client
)用于经过身份验证的请求之间存在“ CORS”问题。我记得在1.x版本中也遇到过这个问题,并花了很多时间来解决这个问题,但是我以前的解决方案在2.x版本中不起作用,对于能成功解决此问题的任何人,我们将不胜感激。工作。
localhost:8081
localhost:4000
从这里逐字阅读代码,我有以下内容:
const client = new ApolloClient({
link: createHttpLink({
uri: 'http://localhost:4000/graphql',
credentials: 'include'
})
})
// Initializing express app code
var app = ....
// Using cors
app.use(cors({
credentials: true,
origin: 'http://localhost:8081',
}));
// Apollo Server create and apply middleware
var apolloServer = new ApolloServer({ ... });
apolloServer.applyMiddleware({ app })
当客户端通过查询后端时。apollo-client
,我在Chrome中收到以下错误:
但是在我的服务器代码中,我明确设置了起点。当我在控制台中检查网络请求时,我得到了一个矛盾的故事,并且Access-Control-Allow-Origin
显式设置为http://localhost:8081
使用Insomnia查询后端服务器并获得预期结果时,我没有遇到此问题。是否有人apollo
在客户端和服务器上进行设置localhost
并成功进行身份验证有经验?
我其实只是傻瓜。我正在查看错误的响应,将sideshowbarker放在其上,会apollo-server-v2
自动覆盖CORS并将Access-Control-Allow-Origin
标题默认设置为*。即使您的快速应用指定了CORS并将其作为中间件应用到apollo-server
,该设置也会被GraphQL
路由覆盖。如果有人遇到此问题,希望可以节省一些时间:
https://github.com/apollographql/apollo-server/issues/1142
您现在可以apollo-server
在其applyMiddleware
方法中明确为其指定CORS :https : //www.apollographql.com/docs/apollo-server/api/apollo-server.html#Parameters-2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句