跳转至

CORS

跨源资源共享(CORS)是一种允许从另一个域请求资源的机制。 Under the hood, Nest makes use of the Express cors package. This package provides various options that you can customize based on your requirements.

入门

要启用 CORS,调用 Nest 应用程序对象上的enableCors()方法。

1
2
3
const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(3000);

enableCors()方法接受一个可选的配置对象参数。 该对象的可用属性在官方CORS文档中有描述。 另一种方法是传递一个回调函数,它允许您根据请求(动态地)异步定义配置对象。

或者,通过create()方法的 options 对象启用 CORS。 将cors属性设置为true以启用 cors 的默认设置。

或者,将CORS 配置对象回调函数作为CORS属性值来定制其行为。

const app = await NestFactory.create(AppModule, { cors: true });
await app.listen(3000);

上述方法仅适用于 REST 端点。

要在 GraphQL 中启用 CORS,请将cors属性设置为true,或者在导入 GraphQL 模块时,将CORS 配置对象或一个回调函数作为cors属性值。

Warning

CorsOptionsDelegate 解决方案并不适用于 apollo-server-fastify 软件包。

1
2
3
4
5
6
GraphQLModule.forRoot({
  cors: {
    origin: 'http://localhost:3000',
    credentials: true,
  },
}),