고리타분한 개발자
쿠키 본문
쿠키
- HTTP는 상태가 없음: 끝난 HTTP통신(이전)의 상태를 알 수 없음(예시: 로그인 했는지 안했는지에 대한 정보)
- 넷스케이프에서 쿠키(이전 통신정보 기억하기)를 만듬
- 로그인 정보 기억, 쇼핑 장바구니 목록 등을 가져올 수 있음
- 웹서버에 보낸, 받은 정보를 웹브라우져가 가지고 있다가 서버에 요청시(Request) 이전 상태값(쿠기)을 전송함
- 웹브라우져가 가진 쿠기: 개발자도구 > 페이지.html 도큐먼트 파일 > Request Headers > Cookie - 서버로 전송할 값
- 서버가 받고 보내는 쿠기: 개발자도구 > 페이지.html 도큐먼트 파일 > Response Headers > Set-Cookie - 웹브라우져로 전송할 값
- 쿠키 유효범위 밖
- 유저가 요청하는 주소값(사이트 주소)이 달라질 경우(라우트 설정과 다른 유저 요청) 쿠키를 서버에 전송하지 않음
- 쿠키 삭제(개발자도구 > Application > Cookies > 쿠키삭제)시 이전 정보가 모두 삭제됨
- 브라우져를 새로 열었을 경우 전혀 다른 브라우져이기 때문에 옆 브라우져 창 쿠키가 유지되지 않음
- 실습
/* 웹서버 : nodejs express */
var express = require('express')
/* 쿠키를 사용하기위해 필요한 middleware(라이브러리) */
var cookieParser = require('cookie-parser')
var app = express();
app.use(cookieParser())
/*
웹서버 라우트 지정 : 특정주소 접근(request)시 서버 응답(response) 설정
웹서버(환경 : nodejs express) 쿠키 설정 : http://expressjs.com/ko/4x/api.html > Request > req.cookies
*/
app.get('/count', function(req, res){
/* 응답 시 쿠키 설정 : (쿠키이름, 쿠키값 : String ) - 자세한 사용방법은 공식문서 참고 */
if(!req.cookies.cart){
/* 웹브라우저가 전송한 쿠기가 존재하지않는다면 */
var count = 0
} else {
var count = parseInt(req.cookies.cart)
}
res.cookie('count', count + 1)
/* 재설정한 상태값(쿠키)을 응답 시 같이 보냄 */
res.send('count : ' + count)
})
/* 웹서버 연결 */
app.listen(3000, function(){
console.log("Connect! 3000 port")
})
참고자료
- http://jinbroing.tistory.com/70?category=697142
'JavaScript > Basic Web Concepts' 카테고리의 다른 글
세션 (0) | 2017.12.05 |
---|---|
URL / URI / REST API (0) | 2017.11.26 |
HTTP 통신이란? (0) | 2017.11.26 |
Comments