Apollo Server 重置 CORS 选项 [重复]
Posted
技术标签:
【中文标题】Apollo Server 重置 CORS 选项 [重复]【英文标题】:Apollo Server resetting CORS options [duplicate] 【发布时间】:2021-07-05 10:33:18 【问题描述】:Apollo 服务器只是忽略我的 CORS 层并应用它自己的选项。
尽管使用选项反映使用以下代码设置 CORS 中间件:
var corsOptions =
origin: true, //This will just copy the request origin and put it in response
optionsSuccessStatus: 200,
credentials: true,
;
app.use(cors(corsOptions));
const apolloServer = new ApolloServer( schema, context , playground: true);
await apolloServer.start();
//Integrate with express
apolloServer.applyMiddleware(app, path: '/api/graphql', cors: corsOptions);
Apollo 服务器只是忽略了我的 CORS 层并返回 'Access-Control-Allow-Origin' : "\*"
,因此我收到了 CORS 错误,因为:
当请求的凭据模式为“包含”时,响应中的“Access-Control-Allow-Origin”标头的值不能是通配符“*”。
【问题讨论】:
如果目标是让其他帖子更易于搜索,您可以建议修改其标题,而不是写一个全新的问题。 【参考方案1】:要解决此问题,您需要直接在 applyMiddleware
方法中提供 CORS 选项。
像这样:
var corsOptions =
origin: true, //This will just copy the request origin and put it in response
optionsSuccessStatus: 200,
credentials: true,
;
apolloServer.applyMiddleware(app, path: '/api/graphql', cors: corsOptions); //WE ADDED CORS HERE
这里有一个link 讨论堆栈溢出问题。
另外,如果有兴趣,offical documentation 会说以下内容。
【讨论】:
以上是关于Apollo Server 重置 CORS 选项 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
cors错误:没有'Access-Control-Allow-Origin'标头apollo-server-express