쿠키 크로스 도메인 작업은 지정된 웹 사이트의 루트 도메인 이름으로 Domain 속성만 지정하면 되기 때문에 간단한 문제인 것 같습니다. 그러나 작성자는 실제로 사용하는 동안 몇 가지 문제에 직면했는데, 이는 실제로 주목할 가치가 있습니다
.
www 기본 도메인 이름에 쿠키를 만들고 다음과 같은 Domain 속성을 작성합니다. (디버깅의 편의를 위해 다음 코드는 모두 ASP 코드입니다.)
Write.asp
프로그램 코드
<%
Response.Cookies(CookieName)("UserName") = "SunBird"
Response.Cookies(CookieName)("비밀번호") = "xyz1234"
Response.Cookies(CookieName).Domain = "xxxx.com"
%>
Read.asp
도 같은 디렉터리에 위치합니다.
프로그램 코드
<%
응답.쓰기 요청.쿠키(쿠키이름)("사용자 이름")
응답.쓰기 요청.쿠키(쿠키이름)("비밀번호")
%>
그런 다음 위와 동일한 코드를 사용하여 Read.asp 문서를 다른 하위 도메인 사이트에 넣습니다. 마지막으로 또 다른 Clear.asp를 만들어 쿠키를 지우고 이를 기본 도메인 이름
Clear.asp
아래에 배치합니다.
프로그램 코드
<%
Response.Cookies(CookieName)("UserName") = ""
Response.Cookies(CookieName)("비밀번호") = ""
Response.Cookies(CookieName).Domain = "xxxx.com"
%>
이제 다음 실행 순서를 통해 테스트할 수 있습니다. Write.asp -> 기본 도메인 이름의 Read.asp -> 하위 도메인 이름의 Read.asp 모든 Read.asp 페이지는 다음에 의해 생성된 쿠키의 값을 읽을 수 있습니다. Write.asp 그런 다음 Clear.asp를 실행하여 지우면 모든 것이 정상입니다. http://bizhi.downcodes.com/에는 문제가 없는 것 같습니다.
그러나 이 방법을 실제 현장에 적용하는 데에는 문제가 있다.
문제 설명:
처음 로그인할 때 모든 것이 정상입니다. 모든 하위 도메인 이름은 기본 도메인 이름에 저장된 쿠키에 액세스할 수 있습니다. 그러나 일단 로그아웃하면 하위 도메인 이름의 쿠키는 지워지지만 기본 도메인 이름의 쿠키는 삭제됩니다. 기본 도메인 이름은 강제로 삭제됩니다. 쿠키를 설정한 후에는 기본 도메인 이름에 어떻게 로그인하더라도 브라우저를 닫았다가 다시 열지 않으면 쿠키가 저장되지 않습니다.
여러 번 시도한 끝에 우연히 문제를 발견했습니다. 테스트 과정은 다음과 같습니다.
Write2.asp 페이지를 만들고 기본 도메인 이름 아래에 배치합니다.
프로그램 코드
<%
Response.Cookies(CookieName)("TEST_COOKIE") = "TEST_COOKIE"
%>
1단계: 브라우저를 닫은 후 다음 순서로 실행합니다. Write.asp -> 기본 도메인 이름의 Read.asp -> 하위 도메인 이름의 Read.asp 여기에서는 모든 Read.asp가 정상적으로 읽혀집니다.
2단계: Clear.asp-->기본 도메인 이름의 Read.asp-->하위 도메인 이름의 Read.asp 여기에서는 지우기 작업이 성공했습니다.
3단계: Write.asp --> Write2.asp --> 기본 도메인 이름 Read.asp --> 하위 도메인 이름 Read.asp 이 시점에서 Read.asp는 모두 쿠키 값을 읽을 수 있습니다.
4단계: 2단계를 다시 실행하여 기본 도메인 이름 Read.asp가 여전히 값을 출력하는 반면 하위 도메인 이름 아래의 Read.asp 값은 지워진 것을 확인합니다.
위의 테스트를 바탕으로 도메인 전반에 걸쳐 쿠키를 사용할 때 주의해야 할 사항을 다음과 같이 요약합니다.
1. 쿠키 그룹(또는 쿠키 사전)이 있고 Domain 속성을 사용하여 도메인 이름을 지정할 때, 그룹에 새 구성원을 수정하거나 추가할 때 작업 후에 Resonse.Cookies(CookieName).Domain 속성을 추가해야 합니다.
2. 필요하지 않은 경우 구성된 도메인의 쿠키 그룹을 수정하지 마십시오. Response.Cookies("CookieText") = CookieValue를 직접 사용하여 새 쿠키를 생성하십시오.