on
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