nest学习:跨域,前缀路径,网站安全,请求限速

文章问题导向

如何跨域,设置路径前缀?
如何让网站更加安全?防止跨站脚本攻击,跨站点请求伪造
如何限速?

如果你都有了答案,可以忽略本文章,或去nest学习导图寻找更多答案


跨域,路径前缀,网络安全
第一步:安装

yarn add helmet csurf

第二步:在main.ts中引入使用

import { NestFactory } from '@nestjs/core';
import { Logger, ValidationPipe } from '@nestjs/common';

import * as helmet from 'helmet';
import * as csurf from 'csurf';

import { AppModule } from './app.module';

const PORT = process.env.PORT || 8000;

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  // 路径前缀:如:http://www.dmyxs.com/api/v1/user
  app.setGlobalPrefix('api/v1');

  //cors:跨域资源共享,方式一:允许跨站访问
  app.enableCors();
  // 方式二:const app = await NestFactory.create(AppModule, { cors: true });

  //防止跨站脚本攻击
  app.use(helmet());

  //CSRF保护:跨站点请求伪造
  app.use(csurf());
  
  await app.listen(PORT, () => {
    Logger.log(
      `服务已经启动,接口请访问:http://wwww.localhost:${PORT}${PREFIX}`,
    )
  });
}
bootstrap();

限速:限制客户端在一定时间内的请求次数

第一步:安装

yarn add @nestjs/throttler

第二步:在需要使用的模块引入使用,这里是全局使用,在app.module.ts中引入
这里设置的是:1分钟内只能请求10次,超过则报status为429的错误

app.module.ts

import { APP_GUARD } from '@nestjs/core';
import { Module } from '@nestjs/common';
import { UserModule } from './modules/user/user.module';

//引入
import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler';

@Module({
  imports: [
  	UserModule,
    ThrottlerModule.forRoot({
      ttl: 60,  //1分钟
      limit: 10, //请求10次
    }),
  ],
  providers: [ //全局使用
    {
      provide: APP_GUARD,
      useClass: ThrottlerGuard,
    },
  ],
})
export class AppModule { }

学习更多

nest学习导图

上一篇:美团Serverless平台Nest的探索与实践


下一篇:关于关闭机房管理助手 与 阻止关机程序 c++代码