[NodeJs] http header && cookie 설정

Darcy Daeseok YU ·2023년 1월 10일
0

헤더 내부에 한글로 된 정보 입력할 때

리디렉트

res.writeHead( 302, 
	{
      Location : "/" , 
      "Set-Cookie" : "name=홍길동; expires=날짜한글; HttpOnly; Path=/; "
	}
);

"Set-Cookie" : "name=홍길동 ..."
=>
"Set-Cookie" : name=${encodeURIComponent(홍길동)} ...

헤더에는 한글을 설정할 수 없음

한글을 encodeURIComponent 메서드로 인코딩

서버측 :

req.headers.cookie 내부에 인코딩된 값을 디코딩 parser를 만들어 쓴다.

decodeURIComponent(한글);

Cookie 셋팅
"Set-Cookie" : "name=홍길동; expires=날짜한글; HttpOnly; Path=/; "

Set-Cookie로 쿠키를 설정할 때 만료 시간(Expires)과 HttpOnly, Path 같은 옵션부여가능 (옵션 사이에 세미콜론(;) 필수)

/**
• 쿠키명=쿠키값: 기본적인 쿠키의 값입니다. mycookie=test 또는 name=zerocho와 같이 설정합니다.

• Expires=날짜: 만료 기한입니다. 이 기한이 지나면 쿠키가 제거됩니다. 기본값은 클라이언트가 종료될 때까지입니다.

• Max-age=초: Expires와 비슷하지만 날짜 대신 초를 입력할 수 있습니다. 해당 초가 지나면 쿠기가 제거됩니다. Expires보다 우선합니다.

• Domain=도메인명: 쿠키가 전송될 도메인을 특정할 수 있습니다. 기본값은 현재 도메인입니다.

• Path=URL: 쿠키가 전송될 URL을 특정할 수 있습니다. 기본값은 ‘/’이고, 이 경우 모든 URL에서 쿠키를 전송할 수 있습니다.

• Secure: HTTPS일 경우에만 쿠키가 전송됩니다.

• HttpOnly: 설정 시 자바스크립트에서 쿠키에 접근할 수 없습니다. 쿠키 조작을 방지하기 위해 설정하는 것이 좋습니다.
 */

Cookie Parser method

function parseCookies (cookies=""){


	// [[key , value ], ... ]로 데이터를 만든다. 
	const _cookies = cookies.split(";").map( cookie => cookie.split("="))
    
    // {key : value , key : value ... }
    
	const initialContainer = {} 
    
   // [[key , value ], ... ]의 안에 값을 꺼내옴  => [k,v]
    _cookies.reduce((container, [k, v]) => {
    	
        container[k.trim()] = decodeURIComponent(v) // 인코딩된 한글을 디코딩
        
        return container; // 꼭 리턴해줘야한다. 
    
    
    } , initialContainer)   
    
    // reduce return값은 정해진 컨테이너 타입에 값이 담겨져서 리턴됨. 
    
    

}
profile
React, React-Native https://darcyu83.netlify.app/

0개의 댓글