쿠키 도메인의 점 접두사는 무엇을 의미합니까?


93

여기에 이미지 설명 입력

local.test.com과 의 차이점은 무엇입니까 .local.test.com? 스크린 샷은 Chrome에서 가져온 것입니다.



1
다음은 정상의 작성자는 다음과 같습니다 erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains
user2864740

user2864740의 의견에서 '16 년 9 월 26 일 16:44 : 링크가 종료되었습니다. 분명히 erik.io 도메인이 다른 사용자 또는 도메인 등록 기관에 전달되었습니다.
qxotk

답변:


58

local.test.com도메인에 .local.test.com사용되는 반면 하위 도메인에도 사용됩니다.


11
그래서 local.test.com적용되지 않습니다 x.local.test.com,하지만 .local.test.com모두 적용 local.test.com과에 x.local.test.com?
ripper234

29
나는 이것이 틀렸다고 생각합니다. 쿠키는 점이 있거나없는 모든 다운 스트림 하위 도메인과 공유됩니다. 하위 도메인은 부모로부터 "상속 된"쿠키로 생각할 수 있습니다. 따라서 example.com에 쿠키를 설정하면 blog.example.com 및 my.blog.example.com에 쿠키가 설정됩니다. blog.example.com에 쿠키를 설정하면 this.is.my.blog.example.com과 그 사이의 모든 하위 도메인에 쿠키가 설정됩니다. 그러나 상속과 마찬가지로 그 반대는 사실이 아닙니다. blog.example.com에 쿠키를 설정해도 example.com에 쿠키가 설정되지 않습니다.
geddski

6
즉, 쿠키의 도메인을 전혀 설정하지 않거나 빈 문자열로 설정하여 쿠키를 호스트로만 제한 할 수 있습니다. 이상하게도 하위 도메인이 아닌 호스트 (example.com)에 대해서만 쿠키를 설정합니다.
geddski

8
다른 답변을 기반으로 명확히하기 위해 점 은 차이를 만드는 데 사용 되었지만 지금은 그렇지 않습니다. 쿠키는 선행 점이 있거나없는 지정된 도메인의 모든 하위 도메인으로 전송됩니다. 하위 도메인으로 전달되는지 여부를 실제로 제어하는 ​​것은 쿠키에 도메인을 설정 하는지 여부 입니다. 도메인을 전혀 설정하지 않으면 쿠키를 발급 한 정확한 도메인으로 만 쿠키가 전송됩니다. 덜 구체적인 상위 도메인에는 전송되지 않으며 (예 : "local.test.com"은 "test.com"에 대한 요청에 포함되지 않음) 도메인 값을 설정 한 경우 일치하는 하위 도메인으로 만 전송됩니다.
Triynko 2016

4
@Triynko, 쿠키를 업데이트 할 때 점이 차이를 만듭니다. 모든 규칙을 분리하지는 못했지만 선행 점의 존재 여부에 따라 결과가 달라지는 것을 보았습니다. 이것이 작동하는 방법은 브라우저에 따라 다르며 모두 직관적 인 것은 아닙니다. 브라우저에서 쿠키 이름에 선행 점이 있는지 여부를 제어하는 ​​것은 제가 한 가장 간단한 프로그래밍 작업이 아닙니다.
DanAllen 2017-06-12

83

앞의 점은 쿠키가 하위 도메인에도 유효 함을 의미합니다. 그럼에도 불구하고 최근 HTTP 사양 (RFC 6265)이이 규칙을 변경했기 때문에 최신 브라우저는 선행 점에 신경 쓰지 않아야합니다. 더 이상 사용되지 않는 RFC 2109를 구현하는 이전 브라우저에 점이 필요할 수 있습니다.

RFC 6265 섹션 4.1.2.3

예를 들어 Domain 속성의 값이 "example.com"인 경우 사용자 에이전트는 example.com, www.example.com 및 www.corp.example에 대한 HTTP 요청을 만들 때 Cookie 헤더에 쿠키를 포함합니다. com. (있는 경우 선행 % x2E ( ".")는 해당 문자가 허용되지 않더라도 무시되지만 후행 % x2E ( ".")가있는 경우 사용자 에이전트는 속성을 무시합니다. )


1
RFC는 2011 년 4 월 날짜입니다. IE8과 IE9는 모두 그 날짜 이전에 처음 출시되었으며 슬프게도 여전히 사용되고 있습니다. 그래서 내 최선의 추측은 (시도하지 않았다) 그들이 선행 점이 필요하다는 것입니다. 이전 RFC에서 아직 실행중인 브라우저의 수를 아는 사람이 있습니까?
BlaM

erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains 는 하위 도메인을 포함하려는 경우 최상의 호환성을 위해 선행 점을 사용할 것을 권장합니다. 이 호환성 요구 사항은 계속해서 줄어들 것입니다. (6255에는 필요하지 않지만 2109와 동일한 최종 결과가 필요합니다.)
user2864740

12

기사 에서 쿠키 도메인에 대한 확실한 가이드와 www 접두사가 웹 사이트를 더 안전하게 만드는 이유 :

결론

정의는 다소 다르지만 이러한 구현에 대해 다음과 같이 단순화 할 수 있습니다 .

  • 쿠키에 도메인이 설정되지 않은 경우 쿠키 요청의 정확한 호스트 이름과 만 일치 해야 합니다. [참고 : 이것은 점이없는 도메인이있는 Set-Cookie를 반환하는 것과 다릅니다!] 하위 도메인 없음, 부분 일치 없음. 이것은 단순히 도메인 속성을 포함하지 않음을 의미합니다. 빈 도메인 속성을 설정하는 것은 유효하지 않습니다. 안타깝게도 Internet Explorer는이를 하위 도메인과 함께 호스트 이름으로 취급하는 것으로 보입니다 .

  • 쿠키에서 도메인을 설정할 때 안전한 선택은 .erik.io와 같이 앞에 점을 추가하는 것입니다. 쿠키는 모든 하위 도메인과 일치합니다.

  • erik.io와 같이 선행 점없이 쿠키 도메인을 설정하는 것은 RFC 2109 구현에서 유효하지 않으며 다른 구현에서 선행 점과 동일한 동작을 생성합니다. 하위 도메인을 포함하지 않고 쿠키를 명시 적으로 설정된 특정 도메인으로 제한하는 방법은 없습니다.

기타 가치있는 관찰 :
  • 모든 RFC에서 지정된 쿠키 도메인은 일반 일치에 따라 현재 호스트 이름과 일치해야합니다. erik.io의 응답에서 www.erik.io에 대한 쿠키를 설정하는 것은 유효하지 않습니다. 도메인이 www.erik.io 인 쿠키는 erik.io와 일치하지 않기 때문입니다. 전자는 더 구체적입니다.

  • RFC 6265에서 도메인은 Set-Cookie 헤더를 구문 분석 할 때 명시 적으로 소문자로 지정됩니다.


1

".local.test.com"의 선행 점은 "Domain = local.test.com"세트 (또는 동일한 "Domain = .local.test.com")가있는 쿠키를 크롬에서 보는 방식입니다.

"Domain = something"이없는 Set-Cookie 정의는 선행 점없이 도메인 (= host)을 봅니다.

따라서 크롬의 선행 점은 서버에서 선행 점이 사용되었는지 여부가 아니라 해당 쿠키가 서버의 정의에 "Domain = something"을 포함했는지 여부를 반영합니다. (있는 경우 쿠키도 하위 도메인으로 전송됩니다).

적어도 이것은 내 테스트가 보여주는 것입니다. 예를 들어 Chrome은 쿠키를 정의한 정확한 문자열과 수신시기를 확인하는 등이를 더 쉽게 읽을 수 있어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.