如何使用Cors或任何其他节点模块限制对我的graphql端点的访问



我正在开发React/NodeJS,我在前端和后端之间使用graphql。

我的前端PWA应用程序有一个类似于以下内容的链接:https://app.domain.com.

我的后端api有一个类似于的链接:https://api.domain.com.

我想保护我的GraphQL端点(https://api.domain.com/graphql)来自任何非来自我的PWA应用程序的请求呼叫(https://app.domain.com)。

有什么好的解决方案吗?使用CORS或任何其他库?

我确实在后台尝试过这个,但仍然不起作用:

app.use(cors({origin:'https://app.domain.com'}));

//My graphql config
app.use("/graphql",
graphqlExpress(req => ({
schema: buildSchema(schema),
rootValue: indexResolver,
graphiql: true,
context: { request: req }
}))
);

我找到了解决方案

const allowedOrigins = ['https://app.domain.com'];
app.use(cors({
origin: function (origin, callback) {
if (allowedOrigins.indexOf(origin) === -1) {
var msg = 'The CORS policy for this site does not ' +
'allow access from the specified Origin.';
return callback(new Error(msg), false);
}
return callback(null, true);
}
}));

最新更新