subdomain.example.com이 example.com에서 읽을 수있는 쿠키를 설정할 수 있습니까? 읽은 경우에도 subdomain.example.com의 서버가 example.com에서 읽을

나는 이것이 결정하기가 너무 어렵다고 믿을 수 없다.

RFC를 읽은 경우에도 subdomain.example.com의 서버가 example.com에서 읽을 수있는 쿠키를 설정할 수 있는지 확실하지 않습니다.

subdomain.example.com은 Domain 속성이 .example.com 인 쿠키를 설정할 수 있습니다. RFC 2965는 이러한 쿠키가 example.com으로 전송되지 않는다고 명시 적으로 밝힌 것으로 보이지만 Domain = example.com을 설정하면 .example.com과 같이 점이 앞에 붙습니다. 예를 들어 example.com이 Domain = example.com으로 쿠키를 설정하면 쿠키를 다시 얻지 못한다고 말합니다. 맞지 않아요

누구나 규칙이 무엇인지 명확히 할 수 있습니까?



답변

같은 RFC2109 에서 인용 :

       * Domain = .foo.com에 대한 요청 호스트 x.foo.com의 Set-Cookie는
         받아 들여지십시오.

그래서 subdomain.example.com위해 쿠키를 설정할 수 있습니다 .example.com. 여태까지는 그런대로 잘됐다.

       다음 규칙은 적용 가능한 쿠키 값을 선택할 때 적용됩니다.
       사용자 에이전트가 가진 모든 쿠키 중.

       도메인 선택
            오리진 서버의 완전한 호스트 이름은 도메인과 일치해야합니다.
            쿠키의 도메인 속성

도메인 일치가 있습니까?

   * A는 FQDN 문자열이며 NB 형식입니다. 여기서 N은 비어 있지 않은 이름입니다.
     문자열의 경우 B 형식은 .B '이고 B'는 FQDN 문자열입니다. (그래서 xycom
     .y.com과 일치하지만 y.com과는 일치하지 않습니다.)

그러나 이제 정의에 따라 example.com도메인이 일치하지 않습니다 .example.com. 그러나 www.example.com(또는 도메인의 다른 “빈 이름”). 이 RFC는 이론상 RFC2965 에 의해 폐기되었으며 , Set-Cookie2운영상 도메인의 주요 점을 강제하는 것에 관한 사항을 지시 했습니다.

@Tony가 지적한 것처럼 더 중요한 것은 실제 세계입니다. 실제 사용자 에이전트가 수행하는 작업을 살펴 ​​보려면

Firefox 3의 nsCookieService.cpp

크롬의 cookie_monster.cc

실제 사이트가 무엇을하고 있는지에 대한 관점를 들어, 함께 연주하려고 wget사용 --save-cookies, --load-cookies그리고 --debug무슨 일이 일어나고 있는지 볼 수 있습니다.

실제로 대부분의 사이트는 Set-Cookie구식 RFC 사양과 “호스트”값의 조합을 사용 합니다 (내장 된 점없이 ( twitter.com 과 같이 ) 또는 도메인 값 (선행하는 점으로) 설정 및 리디렉션 함). 같은 서버에 www.example.com(로 google.com는 않습니다).


답변

브라우저가 현재 시점에서 수행해야 할 최신 브라우저 인 RFC 6265를 구현 하면 쿠키 세트에 .example.com선행 점이 무시되고 (섹션 5.2.3) 쿠키는 기본 도메인으로 전송됩니다. 하위 도메인.

구형 브라우저에서 많은 트래픽이 발생하는 경우이 동작에 의존하지 마십시오. 이 RFC는 2011 년으로 거슬러 올라갑니다.


답변

가능하지 않아야합니다. 그러나 당신이 말했듯이, 이것은 널리 문서화 된 표준이 아니기 때문에 사용중인 소프트웨어에 달려 있습니다.

대부분의 최신 브라우저는 정의 된 “웹 보안 모델”을 준수합니다. 이 모델은 쿠키와 같은 항목 (특히 특정 웹 사이트로 다시 전송되는 방법)에 대한 보안 관련 브라우저의 동작을 효과적으로 관리합니다. 또한이 모델에는 “브라우저가 쿠키를 설정하지 않은 도메인 이름으로 쿠키를 보내지 않습니다”라는 규칙이 있습니다.

즉, domain.com은 js.domain.com에 쿠키를 설정할 수 있어야합니다. 그러나 js.domain.com은 자체 쿠키 만 설정할 수 있습니다. 그러나 이것은 사용중인 브라우저에 따라 다릅니다.