Node.js 학습_익스프레스 웹 서버 만들기_2

Node.js 학습_익스프레스 웹 서버 만들기_2

728x90

반응형

# 익스프레스 웹 서버 만들기

7. static 미들웨어

정적인 파일들을 제공하는 미들웨어

인수로 정적 파일의 경로를 제공

파일이 있을 때 fs.readFile로 직접 읽을 필요 없음.

요청하는 파일이 없으면 알아서 next를 호출해 다음 미들웨어로 넘어간다.

파일을 발견했다면 다음 미들웨어는 실행되지 않는다.

// app.use('요청 경로', express.static('실제 경로')); app.use('/', express.static(path.join(__dirname, 'public')));

컨텐츠 요청 주소와 실제 컨텐츠의 경로를 다르게 만들 수 있음. 이로 인해 서버의 구조를 파악하기 어려워져서 보안에 도움이 된다.

예_1) 요청경로 : localhost:3000/zerocho.html 실제경로 : learn-express/public-3030/zerocho.html 예_2) 요청경로 : localhost:3000/hello.css 실제경로 : learn-express/public-3030/hello.css => 예1, 예2 처럼 사용하면 서버 구조를 예측할 수 없어서 좋음.

static의 경우 해당하는 파일을 찾은 경우 next를 진행하지 않음. 그래서 미들웨어 간의 순서가 중요함. (위에서 실행될 경우 밑에 미들웨어들이 실행되지 않을 수 있음)

8. express-session 미들웨어

세션 관리용 미들웨어

app.use(session({ resave: false, saveUninitialized: false, secret:'zeropassword', cookie: { httpOnly: true, // 자바스크립트로 공격당하지 않기 위해 항상 설정. secure: false, }, name: 'connect.sid', // name의 기본값 : connect.sid(변경가능, 서명되어있어서 읽을수 없는 문자열로 바뀜) })); 세션 쿠키에 대한 설정(secret: 쿠키 암호화, cookie: 세션 쿠키 옵션) 세션 쿠키는 앞에 s%3A가 붙은 후 암호화되어 프런트에 전송됨. resave : 요청이 왔을 때 세션에 수정사항이 생기지 않아도 다시 저장할지 여부 saveUninitialized : 세션에 저장할 내역이 없더라도 세션을 저장할지 req.session.save로 수동 저장도 가능하지만 할 일 거의 없음.

express-session은 요청마다 개인의 저장 공간을 만들어주는 것과 같음.

const session = require('express-session'); const app = express(); app.use(session()); app.get('/', (req, res, next) => { req.session.id = 'hello'; // 이렇게 할 경우 요청을 보낸 사람의 id만 hello가 됨 res.sendFile(path.join(__dirname, 'index.html')); })

728x90

반응형

from http://dlagusgh1.tistory.com/841 by ccl(A) rewrite - 2021-10-13 22:01:30