본문 바로가기
TIL/Node JS

cookie, res.writeHead, Set-cookie, 클라이언트<=>서버

by koreashowme 2019. 10. 25.

req.headers.cookie; 여기다 값을 넣으면 

클라이언트 <=> 서버간의 데이터 전송을 하게 해준다.

 

res.writeHead( 200,  {객체 } )  요청 성공!! 알려주는 것.

두번째 인자로 객체를 넣는다.

{'Set-cookie': 'mycookie=test'}

쿠키설정 : 쿠키내용(키 값) 


서버에서 클라이언트쪽으로 => 데이터를 보낸다.

'Set-cookie' 사용.

 

개발자 도구!!!!확인!!!!!!

Headers => Set-Cookie : mycookie=test 

브라우저에 쿠키 저장하고

 

쿠키 확인 방법

Application => Cookies 탭에서 저장된 쿠키를 확인할 수 있다.

 

==================================================

 

if ( req.url.startsWith('/login') )   {       // 로그인에 있는 쿼리스트링 (1)

const { query } = url.parse(req.url);     // 쓸 수 있게 파싱해서 (2)

const { name } = qs.parse(query); //파싱해서 (2)

const expires = new Date( ) ; 현재시간으로부터 5분뒤 설정 

expires.setMinutes(expires.getMinutes( ) + 5); 

 

res.writeHead( 302,    {

Location : '/' ,

'Set-Cookie' : 'name=${encodeURIComponent(name);  // 다시 쿠키로 저장 (3)

EXPIRES =${expires.toGMTString()}; 

HttpOnly; 

Path=/'

};

res.end( );

 

else if (cookies.name) {

  res.writeHead(200, { 'Content-Type: 'text/html; charset=utf-8'});

  res.end( '${cookies.name} 님 안녕하세요);

}

 

else {

  fs.readFile('./server4.html' , (err, data) => {

  res.end(data);

});

}

 

*302는 임시 이동, 브라우저에게 Location에 적힌 페이지로 이동 하라는 뜻.

 

302,  원하는 location으로 이동

Location: '/' 해당하고 싶은 루트로 적용시키면 됨.

 

클라이언트

로그인이라는 주소로, 뒤에 해당 이름 쿼리스트링 붙여서, 서버로 요청이 간다.

 

 

서버 (클라이언트에서 request 받음)

받은 로그인, 쿼리스트링 설정 하고(1)=> 파싱 후(2) => 다시 쿠키로 저장 후 (3)=> 클라이언트로 넘어간다.

 

클라이언트에게 해당 이름을 쿠키로 삼으라는 명령과 함께 응답을 보낸다.

 

'Set-cookie' 

서버에서 클라이언트쪽으로 데이터를 보낼때 사용

name=${encodeURIComponent(name)} 본인이 입력한 name 

 

EXPIRES =${expires.toGMTString()}; 쿠키 유효시간 설정

유효시간이 지나면 쿠키가 알아서 무효가 된다. 

 

Httponly; => 자바스크립트에서 쿠키를 접근 할 수 없다.

Path =/ 해당 경로에서 유효함.

ex) /post, /post/1 

 

EXPIRES =${expires.toGMTString()}; 쿠키 유효시간

유효시간이 지나면 쿠키가 알아서 무효가 된다. 

const expires = new Date(  ) ; 현재시간으로부터 5분뒤

expires.setMinutes(expires.getMinutes( ) + 5); 

 

comment