본문 바로가기
멀티캠퍼스 풀스택 과정/프론트엔드

프론트엔드3-10.[javascript] document객체의 cookie

by 이쟝 2022. 2. 10.

document.cookie

  • 쿠키(cookie)란 HTTP의 일종으로 브라우저에 저장되는 작은 기록 정보 파일(클라이언트 컴퓨터에 데이터를 저장할 수 있음)
  • HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다. 쿠키는 주로 웹 서버에 의해 생성된다. 
  • cookie는 document객체 안에 있지만 jsp에도 있고, js에도 있다. 
  • 창을열어서 -> F12(페이지 검사) -> Application -> 왼쪽 메뉴 Storage -> Cookies
  • document.cookie는 name=value 쌍으로 구성되어 있고, 각 쌍은 ;로 구분한다. (변수=데이터 세미콜론(;)의 반복)

 

 name 변수 value 
path URL의 현재위치 domain 쿠키에 접근 가능한 domain
expires/max-age 유효일자(만료기간)까지 남아있고 시간이 지나면 쿠키가 알아서 삭제된다.(session cookie) 
secure  이 옵션을 설정하면 HTTP로 통신하는 경우에만 쿠키가 전송된다. 
samesite 크로스 사이트 요청 위조 공격을 막기위해 만들어진 옵션이다. 

예제) 홈페이지를 열때마다 생기는 일주일동안 안보이기 팝업창 구현!

1. HTML파일(팝업창)

  • 팝업창 생성(팝업창띄우기 예제에서 했던 것과 똑같이 구현)
  • 체크박스와 창닫기 버튼 생성
<style>
	body {
		background-image: url(../img/dog3.jpg);
		background-size: 100% 510px;
		background-repeat: no-repeat; 
	}
	</style>
</head>
<body>
	<input type="checkbox" name="cookieChk" id="cookieChk"/>일주일동안 안보이기
	<input type="button" value="Close" onclick="setCookie()"/>
</body>
</html>

 

2. js구현<script>(쿠키 데이터 구현)

  • setCookie( )는 쿠키기록 함수이다. 체크박스가 checked 상태일 때 쿠키를 저장한다.(만약 체크박스에 checked가 되면 쿠키가 저장되면서 다음 번 홈페이지 창을 열었을 때 그 팝업창이 안뜨게 한다.)
  • checkbox가 checked일 때 true, 아닐 때 false
<script>
	function setCookie() { 
		if(document.querySelector("#cookieChk").checked) {
				
			// 쿠키 expires에 넣을 날짜 생성
			var now = new Date();
			now.setDate(now.getDate()+7); // 오늘 날짜 + 일주일 후
				
			var cookieData = "popup=yes;path=/;expires="+now+";"; // 첫번째 쿠키 데이터 생성
			document.cookie = cookieData; // 쿠키데이터를 생성해서 document.cookie에 넣기
				
			document.cookie = "notice=no;path=/;expires="+now+";"; // 두번째 쿠키 데이터 생성
			}
		self.close();  // window.close() close 버튼을 누르면 팝업 창 닫기
	}
</script>

1. HTML파일(쿠키팝업창을 띄울 메인 페이지 창 생성)

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>cookies</title>
</head>
<body>
	<h1>쿠키를 이용해 팝업창 처리하기</h1>
	<img src="../img/dog4.jpg"/>
</body>
</html>

 

2. js구현<script>(쿠키 정보를 가져오기)

  • window.open( )으로 팝업창을 열고 팝업창의 쿠키 정보를 가져오기
<script>
	function popOpen() {
		var cookie = document.cookie;  // var cookie = cookieData
		var idx = cookie.search("popup=yes") // 문자열 위치를 찾는 함수(search, indexOf)
			
		// idx=-1일 때, 쿠키 정보가 없으므로 팝업 띄워야 한다. 쿠키 기록이 없을 때 open
		if(idx==-1) {  
			window.open("NewFile.html", "p", "width=400px, height=400px");
		}
	}
</script>
더보기
더보기
더보기

 

팝업창을 체크하고 close를 누르고
현재 페이지를 새로고침하면 쿠키정보가 저장된다.&amp;nbsp;
쿠키 삭제를 하고 새로고침을 하면 다시 팝업창이 뜬다.&amp;nbsp;
삭제되어서 팝업창이 떴다!

 

 


2022.02.10 - [멀티캠퍼스 풀스택 과정/프론트엔드] - 프론트엔드3-7. [javascript] 팝업창띄우기 예제(window와 screen)

2022.02.09 - [분류 전체보기] - 프론트엔드3-6. javascript의 내장객체 BOM(브라우저객체모델)

2022.02.09 - [멀티캠퍼스 풀스택 과정/프론트엔드] - 프론트엔드3-1. JavaScript 기본(입출력방법과 Dom요소의 선택)

https://ko.javascript.info/cookie