Apollo Express CORS 选项

Apollo Express CORS options

如何保护我的 graphql 路由不被未知资源查询?

我目前有这些选项:

export const corsOptions = {
  origin: ["https://my-website.com", "https://api.my-website.com"],
  credentials: true,
}

expressApp.use(cors(corsOptions))

apolloServer.applyMiddleware({expressApp, cors: corsOptions})

我已将其部署在 AWS/Fargate。

问题是我仍然可以从我的计算机在 Postman 中查询。

请注意,我还将有一个 React-native 应用程序连接到此 API。

什么是适合我的 CORS 选项?

正如评论中所指出的,CORS 仅由浏览器强制执行——它不能用于阻止其他客户端(如 Postman)访问您的 API。

如果您的 API 仅由其他服务器使用,您可以使用 API 密钥保护它,该密钥可以包含在 header 中或作为 URL范围。 API 密钥也可用于计量 rate-limit 您的 API 的消费者。

如果您的 API 被 Web 或本机应用程序使用,则使用 API 密钥基本上毫无意义,因为最终用户可以通过检查源代码来获取它或嗅探他们的本地流量。如果您无论如何都需要用户登录,那么您只需为您的查询实施适当的授权机制。如果您希望无需登录即可访问您的部分或全部查询,那么最好的办法是实施 rate-limiting 以限制潜在的滥用。