文章问题导向
如何跨域,设置路径前缀?
如何让网站更加安全?防止跨站脚本攻击,跨站点请求伪造
如何限速?
如果你都有了答案,可以忽略本文章,或去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 { }
学习更多