CORS在apollo-server-express上不起作用

时间:2019-07-19 01:30:26

标签: express graphql apollo

包装:apollo-server-express

版本: v2.6.0

问题:CORS设置未生效。

已报告给阿波罗?是,Issue 3058

说明:从我们的React客户端开始,在Apollo Engine中发送better client awarenessapollographql-client-nameapollographql-client-version标头。

Access to fetch at 'https://something.com/graphql' from origin 'http://localhost:3000' has been blocked by CORS policy: Request header field apollographql-client-name is not allowed by Access-Control-Allow-Headers in preflight response.

我们收到上述CORS错误。通过传递cors,我们通过快速中间件在Apollo Server上启用了cors: true。由于某些原因,此更改没有任何区别。我们继续收到上述错误。

const server: ApolloServer = new ApolloServer({
...
...
});

const app: Application = express();

server.applyMiddleware({
   app,
   cors: true,
   path: '/graphql',
});
  • 我们有nginx坐在前面,它确实收到了请求并转发到Apollo Server。
  • cors: true默认启用所有功能吗?
  • 我们尝试非常具体,但这也无济于事。
cors: {
   origin: true,
   allowedHeaders: ['Authorization', 'Content-Type', 'apollographql-client-name']
},

欢迎任何输入和建议!

1 个答案:

答案 0 :(得分:0)

问题已解决。

我们在Apollo Server上有kubernetes入口层,这就是导致更改无法反映的原因。在nginx入口上启用cors后,我们就能够成功进行呼叫。