CORS
너무간단하게 main.ts 한줄만 추가해주면된다.
async function bootstrap() {
const app = await NestFactory.create<NestExpressApplication>(AppModule);
app.enableCors(); // 추가 및 config
app.setBaseViewsDir(join(__dirname, '..', 'views'));
app.setViewEngine('html');
await app.listen(3030);
}
bootstrap();
하지만 쿠키를 사용하기 위해서는 wileCard가 안된다는 점과, credential header를 추가해주어야한다.
app.enableCors({
origin: 'http://localhost:3000',
credentials: true,
});
Cookie
npm i cookie-parser
npm i -D @types/cookie-parser
async function bootstrap() {
const app = await NestFactory.create<NestExpressApplication>(AppModule);
app.enableCors({
origin: 'http://localhost:3000',
credentials: true,
});
app.use(cookieParser()); // 추가
app.setBaseViewsDir(join(__dirname, '..', 'views'));
app.setViewEngine('html');
await app.listen(3030);
}
bootstrap();
Set-Cookie
res 객체를 꺼내서 express 와 동일하게 해준다.
append('Set-Cookie') or cookie() 사용
passthrough:true 는 응답을 nest에게 여전히 위임한다는 의미이다.
@Post('/login')
login(@Res({ passthrough: true }) res: Response) {
res.cookie('name', 'kong');
return { res: 'logined!' };
}
Cookie 읽기 - 커스텀 데코레이터
cookie-decorator.ts
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const Cookies = createParamDecorator(
(data: string, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
return data ? request.cookies?.[data] : request.cookies;
},
);
@Get('/user')
userInfo(@Cookies('name') name: string) {
console.log(name);
return { res: name };
}
반응형
'Archive' 카테고리의 다른 글
Passport 와 JWT 인증 & Custom Decorator (0) | 2022.08.01 |
---|---|
Cookie & Session (0) | 2022.08.01 |
static 파일제공 & View Engine & React (0) | 2022.07.31 |
TypeORM 과 API (0) | 2022.07.31 |
Cookie 와 session 으로 인증관리하기 (0) | 2022.07.31 |