No desenvolvimento front-end e back-end, frequentemente encontramos problemas entre domínios que precisam ser resolvidos. A seguir, apresentamos brevemente como resolver problemas de domínio cruzado no Nestjs.
Primeiro, instale o módulo @nestjs/common
do pacote cors
.
npm install --save @nestjs/common
Use o middleware CORS globalmente: no módulo raiz do seu aplicativo NestJS (geralmente app.module.ts
), use app.use()
o método para habilitar globalmente o middleware CORS
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CorsMiddleware } from '@nestjs/common';
@Module({
imports: [], // 导入其他模块
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(CorsMiddleware).forRoutes('*');
}
}
O método no código acima configure()
usa CorsMiddleware
o middleware e o aplica a todas as rotas. Você também pode limitar solicitações de origem cruzada especificando rotas específicas.
Configurações personalizadas de CORS: se precisar personalizar as configurações de CORS, você pode passar um objeto de configuração para apply()
o método e definir as opções necessárias nele
import { CorsOptions } from '@nestjs/common/interfaces/external/cors-options.interface';
const corsOptions: CorsOptions = {
origin: 'http://example.com', // 设置允许请求的来源
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', // 设置允许的 HTTP 方法
allowedHeaders: 'Content-Type,Authorization', // 设置允许的请求头
};
// 在 configure() 方法中应用自定义的 CORS 设置
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(CorsMiddleware(corsOptions)).forRoutes('*');
}
}
No código acima, você pode definir origin
e definir a origem das solicitações methods
de allowedHeaders
domínio cruzado, métodos HTTP permitidos e cabeçalhos de solicitação. Através das etapas acima, você pode implementar a função de resolver problemas de domínio cruzado em aplicativos NestJS. Certifique-se de que o CORS esteja configurado corretamente em ambientes de produção para garantir segurança e proteção de dados.