ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Node.js 2021/10/9
    TIL(Today I Learned) 2021. 10. 10. 00:58

    클라이언트가 요청한 GET, POST..등의 정보가 터미널에 출력, 

    app.use(morgan('dev'));

    배포 시에는 'dev'대신에 더 정확한 출력이 가능한 'combined'를 사용

    app.use(morgan('combined'));

     

    app.use(cookieParser(process.env.COOKIE_SECRET));

    쿠키 파서를 사용함으로써 express에서 쿠키관련된 조작을 할 수 있게되는데,

    기본적으로 cookieParset(secret, option)의 형식이고 secret, option 모두 선택사항이다.

     

    cookieParser를 사용해야하는 궁극적인 이유를 알고 싶어졌다.

    웹에는 기본적으로 cookie왜 세션이 있는데

    cookie는 클라이언트에, 세션은 서버에 저장이 되는 형식이다.

    안전성에선 세션이 쿠키보다 우월하지만, 그렇다고 세션만 사용하게 되면 사용자가 몰렸을 때 과부하가 일어날 가능성이 있기 때문에 쿠키를 병행해서 사용해줘야한다.

     

    쿠키는 만료기간이 있기 때문에 maxAge로 만료시간을 설정해주고, 보통 httpOnly로 웹상에서만 쿠키를 수정 가능하게 하여 자바스크립트로 해킹을 방지하고 , path로 클라이언트에 저장되는 쿠키의 경로를 지정해주고,   signed를 통해 암호화를 시켜 해커들이 브라우저에서 읽지 못하게(정확하게는 서명이다.) 설정해준다.

     

    또한

    app.use(express.json());

    app.use(express.urlencoded({ extended: false }));

    를 선언해줌으로써 bodyParser를 설치하지 않도록 지정해줄 수 있다.

    이를 통해 

    예시) req.body.name //req.body.name에서 name은 클라이언트에서 보내주는 값에 따라 변경되는 값이다.

    app.use(express.urlencoded({ extended: false }));

    extened:true로 선언 했을 시 qs, false로 선언할 시 queryString(내장)라는 모듈을 사용하게 된다.

    qs가 queryString보다 훨씬 강력하다.

     

    더 정확하게 얘기하자면 true일 경우 객체 형태로 전달된 데이터내에서 또 다른 중첩된 객체를 허용한다는 의미이고, false일 경우에는 허용하지 않는다는 의미이다. 

     

    qs는 추가적인 보안기능이 있는 모듈로써 필요하다면 모듈 설치후에 사용하면 된다. 

    urlencoded를 선언해주지 않으면 bodyparser관련 에러가 뜨므로 선언해줘야 한다.

    (쿼리스트링 관련 객체를 사용하지 못하게 되기 때문이다.)

    'TIL(Today I Learned)' 카테고리의 다른 글

    클라우드 컴퓨팅  (0) 2021.10.25
    Javascript ES5+, nodejs  (0) 2021.10.24
    정처기가 끝나고.. 또 다른 시험 중..  (0) 2021.10.21
    정보처리기사 실기 준비.. 그리고 react  (0) 2021.09.28
    2021.9.27  (0) 2021.09.27
Designed by Tistory.