728x90
쿠키의 필요성

요청에는 한 가지 단점이 있음
- 누가 요청을 보냈는지 모른다(IP 주소와 브라우저 정보 정도만 알 수 있다)
- 로그인을 구현하면 된다(누가 요청 한지 알기 위해서)
- 쿠키와 세션이 필요하다
쿠키: 키=값의 쌍
- ex) name=zerocho
- 매 요청마다 서버에 동봉해서 보내면 된다.
- 서버는 쿠키를 읽어 누구인지 파악할 수 있다.
쿠키 서버 만들기


- writeHead: 요청 헤더에 입력하는 메서드
- Set-Cookie: 브라우저에게 쿠키를 설정하라고 명령
- 쿠키 : 키 = 값의 쌍( name=zerocho)
- 매 요청마다 서버에 동봉해서 보냄
- req.headers.cookie: 쿠키가 문자열로 담겨있음
- req.url: 요청 주소
- 요청이 전송되고 응답이 왔을 때 쿠키가 설정됨
- favicon.ico는 브라우저가 자동으로 보내는 요청
- 두 번째 요청인 favicon.ico에 쿠키가 넣어짐
헤더와 본문

- http 요청과 응답은 헤더와 본문을 가진다
- 본문은 주고받는 실제 데이터이다
- 헤더는 요청 또는 응답에 대한 정보를 가진다
- 쿠키는 부가적인 정보이므로 헤더에 저장한다
writeHead 메서드에 첫 번째 인수로 넣은 값(요청이 성공했는지 실패했는지를 알려줌)
- 2XX: 성공을 알리는 상태 코드입니다. 대표적으로 200(성공), 201(작성됨)이 많이 사용됩니다.
- 3XX: 리다이렉션(다른 페이지로 이동)을 알리는 상태 코드입니다. 어떤 주소를 입력했는데 다른 주소의 페이지로 넘어갈 때 이 코드가 사용됩니다. 대표적으로 301(영구 이동), 302(임시 이동)가 있습니다.
- 4XX: 요청 오류를 나타냅니다. 요청 자체에 오류가 있을 때 표시됩니다. 대표적으로 401(권한 없음), 403(금지됨), 404(찾을 수 없음)가 있습니다.
- 5XX: 서버 오류를 나타냅니다. 요청은 제대로 왔지만 서버에 오류가 생겼을 때 발생합니다. 이 오류가 뜨지 않게 주의해서 프로그래밍해야 합니다. 이 오류를 클라이언트로 res.writeHead로 직접 보내는 경우는 없고, 예기치 못한 에러 발생 시 서버가 알아서 5XX대 코드를 보냅니다. 500(내부 서버 오류), 502(불량 게이트웨이), 503(서비스를 사용할 수 없음)이 자주 사용됩니다.
쿠키로 식별하기

- 쿠키에 내 정보를 입력한다
- parseCookies: 쿠키 문자열을 객체로 변환한다
- 주소가 /login인 경우와 /인 경우로 나뉜다
- /login인 경우 쿼리스트링으로 온 이름을 쿠키로 저장한다
- 그 외의 경우 쿠키가 있는지 없는지 판단한다 -> 있으면 환영 인사 없으면 로그인 페이지로 리다이렉트
- Set-Cookie 시 다양한 옵션이 있음
- 쿠키명=쿠키값: 기본적인 쿠키의 값입니다. mycookie=test 또는 name=zerocho 같이 설정합니다.
- Expires=날짜: 만료 기한입니다. 이 기한이 지나면 쿠키가 제거됩니다. 기본값은 클라이언트가 종료될 때까지입니다.
- Max-age=초: Expires와 비슷하지만 날짜 대신 초를 입력할 수 있습니다. 해당 초가 지나면 쿠기가 제거됩니다. Expires보다 우선합니다.
- Domain=도메인명: 쿠키가 전송될 도메인을 특정할 수 있습니다. 기본값은 현재 도메인입니다.
- Path=URL: 쿠키가 전송될 URL을 특정할 수 있습니다. 기본값은 ‘/’이고 이 경우 모든 URL에서 쿠키를 전송할 수 있습니다.
- Secure: HTTPS일 경우에만 쿠키가 전송됩니다.
- HttpOnly: 설정 시 자바스크립트에서 쿠키에 접근할 수 없습니다. 쿠키 조작을 방지하기 위해 설정하는 것이 좋습니다.
728x90
'Node > http 모듈로 서버 만들기' 카테고리의 다른 글
| https, http2 (0) | 2022.09.05 |
|---|---|
| 세션 사용하기 (0) | 2022.09.05 |
| REST API 서버 만들기 (0) | 2022.09.05 |
| fs로 HTML 읽어 제공하기 (0) | 2022.09.05 |
| HTTP 서버 만들기 (0) | 2022.09.05 |