회원가입아이디/비번찾기
실시간 TV
홈으로
여러 도메인들 간 쿠키 공유하기
4년 전
도메인들 간 쿠키 공유하기

(Sharing cookies across multiple domains hosted on different servers)

이 글은 http://www.innovativephp.com/sharing-cookies-across-multiple-domains-hosted-on-different-servers/ 의 글을 번역한 글입니다.


도메인들간 쿠키 공유에 대한 간단한 소개

왜 필요한가?

웹사이트나 웹어플리케이션을 개발할때 필요에 따라 단일 도메인이나 별개의 도메인 또는 서브도메인을 사용할수 있다. 그리고 일반적으로 보안이나 성능, 서버부하 등에 대한 이유로 서브 도메인 형식으로 구성한다

구글은 이 개념을 이해하는데에 좋은 예이다. 구글은 메일, 검색, 구글+ 등의 서비스에 대해 서브도메인 형식으로 서비스를 제공한다. 구글은 자신들의 서비스에 단일 로그인 정보를 사용하기 때문에 서비스 간에 로그인 정보를 공유할수 있는 방법이 필요하다. 보통 로그인 데이터는 브라우저 세션에 저장된다. 이때 각 서브도메인은 별개의 세션을 유지하기 때문에 세션 기능을 이용하는한 로그인 정보를 공유하는것은 불가능하다. 바로 이점이 쿠키가 필요한 이유다. 쿠키값은 여러 사이트에서 접근할수 있으며 각각의 어플리케이션에 필요한 정보를 유지할수 있다. PHP는 도메인들간 쿠키를 공유하는 기능을 지원한다

도메인 간 쿠키 공유의 제한점

비록 도메인 간에 쿠키값을 저장하고 접근하는것이 가능하긴 하지만 몇가지 제한사항이 있다. 다른 도메인의 쿠키값은 저장할수 없다는 것이다. 단지 동일한 사이트의 서브도메인 쿠키를 이용할수 있을 뿐이다.

동일한 서버에서 서비스되는 www.example1.com 와 www.example2.com 이라는 사이트가 있다고 가정하자. 이 두개는 같은 서버에 있기는 하지만 도메인 이름이 다르다. 따라서 이 두 사이트간 쿠키를 공유할 수는 없다. 하지만 www.example.com 과 이 사이트의 서브도메인을 활용한 사이트, 예를들어 app.example.com, demo.example.com 를 사용한다면 이 세 도메인간의 쿠키는 공유될수 있다. 이때 이 서비스가 반드시 동일한 서버에 있을 필요는 없으며, 모든 도메인이 하나의 top domain에 속할 필요는 없다.


PHP로 cookie 설정하기/가져오기

PHP 를 사용해서 쿠키 저장하기

php는 웹브라우저상에서 쿠키를 저장하고 삭제할수 있는 함수 setCookie 를 기본적으로 제공한다

옵션에 따라 다양한 환경에서의 사용하는것도 가능하다

setcookie(cokie name, cookie value, cookie lifetime, cookie path, domain, connection type, http access);

•Cookie Name – 쿠키 이름. 한번 설정하면 이후로는 $_COOKIE['name'] 로 접근할수 있다.
•Cookie Value – 쿠키의 값.
•Cookie Lifetime – 만료나 삭제까지 남은 시간. 보통 time()+3600 (현재시각+한시간) 과 같은 형식으로 사용한다
•Cookie Path – 웹사이트의 특정 디렉토리 내에서만 유효하도록 설정하는 변수. "/" 로 설정하면 웹사이트 전체에서 접근할수 있다
•Cookie Domain – 특정 서브도메인 또는 도메인 전체를 유효범위로 지정하는 변수.
•Connection Type – TRUE 또는 FALSE 값을 가진다. TRUE일 경우 HTTPS인 경우에만 접근 가능하다.
•HTTP Access – TRUE 또는 FALSE 값을 가진다. TRUE일 경우에는 HTTP로 접근할 시에만 접근 가능하다

쿠키 값 가져오기

$_COOKIE['cookie_name'];


쿠키 삭제하기

쿠키 삭제 함수는 쿠키 저장 함수와 똑같다. 단지 Lifetime 파라미터를 과거 시점의 값으로 설정해주면 된다.

생성을 아래와 같이 했다면

setcookie("Logged", "True", time()+3600, "/");


아래와 같이 삭제할 수 있다

setcookie("Logged", "True", time()-3600, "/");



쿠키 함수의 올바른 사용예

이름과 값으로 생성

setcookie("Logged", "True", time()+3600);


어플리케이션 전체를 범위로 생성

setcookie("Logged", "True", time()+3600, "/");


어플리케이션 내의 특정 폴더를 범위로 생성

아래 함수는 어플리케이션 내에서 /blog/tutorials/ 폴더 내에서만 작동한다

setcookie("Logged", "True", time()+3600, "/blog/tutorials/");


도메인 간 공유 쿠키 생성

아래 함수는 exmaple 도메인과 그 하위 도메인에 대해서만 작동한다

setcookie("Logged", "True", time()+3600, "/", ".example.com");


특정 하위도메인에 대해서만 생성

아래 함수는 app.example.com 도메인에 대해서만 작동한다

setcookie("Logged", "True", time()+3600, "/", ".app.example.com");


보안이 유지되는 특정 하위 도메인의 쿠키로 생성

아래 함수는 example.com과 그 하위 도메인 영역에서 https 연결하고 있을 경우에만 작동한다

setcookie("Logged", "True", time()+3600, "/", ".example.com", 1);


보안이 유지되는 특정 하위 도메인의 쿠키로 생성. HTTP 요청으로만 접근 가능

아래 함수는 example.com과 그 하위 도메인 영역에서 https 연결하고 있을 경우에 작동하며 HTTP(이 경우에는 HTTPS) 연결을 통해서만 접근이 가능하다

setcookie("Logged", "True", time()+3600, "/", ".example.com", 1, 1);

추천추천 : 137 추천 목록
번호 제목
2,885
 input 입력 필드 앞뒤 공백 실시간 제거
2,884
 Placeholder 포커스시 감추기
2,883
 MySQL 중복된 데이터를 삭제
2,882
 MySQL 중복 데이터 확인
2,881
 sessionStorage.getItem 와 sessionStorage.setItem
2,880
 제이쿼리 랜덤으로 배경색 변경
2,879
 preg match에 관한 정규식
2,878
 Stream an audio file with MediaPlayer 오디오 파일 스트리밍 하기
2,877
 Audio Streaming PHP Code
2,876
 PHP $ SERVER 환경 변수 정리
2,875
 Vimeo (비메오) API 를 사용하여 플레이어 컨트롤하기
2,874
 iframe 사용시 하단에 발생하는 공백 제거방법
2,873
 아이프레임(iframe) 전체화면 가능하게 하기
2,872
 부트스트랩(bootstrapk)에서 사용하는 class명 정리
2,871
 부트스트랩 CSS
2,870
 크롬에서 마진 조절
2,869
 PHP 현재 페이지의 도메인명이나 url등의 정보 알아오기
2,868
 PHP preg match all()
2,867
 PHP 로 웹페이지 긁어오기 모든 방법 총정리!
2,866
 [PHP] 원격지 파일 주소 노출 안하고 curl로 다운로드 받기
2,865
 PHP 함수 정리
2,864
 아이프레임(iframe) 비율 유지하면서 크기 조절하는 방법
2,863
 PHP 배열에서 무작위로 하나 뽑아주는 array rand() 함수
2,862
 PHP 정규식 정리
2,861
 PHP 정규식을 활용한 태그 및 특정 문자열 제거 및 추출 방법
2,860
 php 크롤링 또는 파싱 함수, 정규식 모음
2,859
 제이쿼리 기본 명령어
2,858
 웹페이지 가로 모드세로 모드 인식하기
2,857
 모바일 웹 화면 강제 회전(가로모드 고정)
2,856
 [HTML5]에서 frameset 대체 방법과 iframe 속성
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright ⓒ musictrot All rights reserved.