2009-09-13 5 views
10

이 아닌 하위 도메인에서 쿠키를 설정할 수있는 방법이 있습니까? 즉, domain.com에 쿠키를 제공하고 이 아니고www.domain.com 또는 xyz.domain.com이 아닌 쿠키를 사용할 수있게하십시오. 나는 등 하위 도메인에 정적 CDN을 설정하고있어 사용자 세션 쿠키가 앞뒤로 모든 이미지, CSS 파일, JS 파일에 대한 가고 싶지 않아하위 도메인이 아닌 도메인의 PHP setcookie()

:

//this is what i'm "intending"... 
setcookie($name,$value,$expires,'/','domain.com'); 
//however, this is how it behaves: 
setcookie($name,$value,$expires,'/','.domain.com'); 

추론

... 내 사이트에 www.domain.com을 사용하도록 되돌려 야합니까? 해결 방법이 있습니까?

+0

여기서 도메인을 'null'로 설정하는 것이 올바른 방법입니다. 그렇지 않으면 ['$ cookie-> setDomain ($ domain)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117)이 도움이 될 것입니다. [이 독립형 라이브러리] (https://github.com/delight-im/PHP-Cookie)에 있습니다. – caw

답변

17

분명히 "domain.com"과 "* .domain.com"이 일치하는 쿠키가 있어야 정상적인 동작을합니다. 예를 들어

: PERSISTENT CLIENT STATE HTTP COOKIES 상태 (일부 강조 광산) :

domain=DOMAIN_NAME

유효 쿠키, 쿠키의 도메인 속성의 비교 쿠키 목록을 검색 의 인터넷 도메인 이름이 인 호스트가 인 호스트로 작성된 입니다. ...
"꼬리 일치"란 호스트의 정규화 된 도메인 이름의 꼬리와 도메인 특성이 으로 일치하는 을 의미합니다. 도메인 속성이 "acme.com"인 경우 은 호스트 이름 "anvil.acme.com"을 으로 "shipping.crate.acme.com"과 일치시킵니다. 지정된 도메인 내

만 호스트는 도메인에 대한 쿠키를 설정하고 도메인이 있어야합니다 적어도 두 (2) 또는 세 (3) 기간 양식의 도메인을 방지하기 위해 그들 ". com ", ".edu "및"va.us "입니다. 이 아래에 나열된 7 개의 특수 최상위 도메인 중 하나에서만 실패하는 도메인은 두 개의 마침표가 필요합니다. 다른 도메인 은 3 개 이상 필요합니다. 특수 최상위 도메인은 "COM", "EDU", "NET", "ORG", "GOV", "MIL"및 "INT"입니다.

  • 사용 "www.domain.com을"귀하의 사이트에 대한
  • 또는 (".anotherdomain.com"같은) 정적 콘텐츠 완전히 다른 도메인 이름을 사용

그래서, 당신은해야 하나

  • 예를 들어 stackoverflow에서 수행되는 작업입니다. 정적 콘텐츠는 sstatic에서 제공됩니다.쿠키 도메인은 도메인 이름에 대한 tail matched 같이
+0

좋은 설명, 여기에도 +1. – Thiyagaraj

+0

와우, 멋진 정보. 나는 주변을 파다 때 그것을 가로 질러 실행하지 않았다. 고마워. 내 질문에 대답하는 것 같아요 ... www.domain.com입니다. – brianreavis

+0

오신 것을 환영합니다 :-) 재미있게 보내십시오! (귀하의 웹 사이트 및 쿠키에 대해 www.domain.com을 사용하는 경우 귀하의 사이트에 액세스 할 때 "domain.com"이 "www.domain.com"으로 리디렉션되는지 확인하십시오. 브라우저에 따라 자동으로 수행됩니다. 항상 작동하지는 않습니다. 프록시가 작동하지 않는 경우가 있습니다 (예를 들어, 작동하는 경우가 아님). –

6

이것은 (CDN 포함) 많은 사이트가 CDN으로 사용하기 위해 전용 도메인을 등록하는 이유입니다.

1

을 순 그것은 불가능합니다. www가 있어야합니다.