2011-04-27 3 views
2

웹 페이지가 제공되면 누가 DOM 문서를 작성합니까? 그것은 엄격하게 서버 인쇄 HTML인가? 브라우저는 어떻게 관련되어 있습니까? 필자는 document.cookie 속성을 채우는 방법을 아는 데 특히 관심이 있습니다.DOM 개체 document.cookie 속성은 어떻게 작성됩니까?

A) 서버는 브라우저가 사용자 하드 드라이브에 foobar.com에 대한 쿠키를 저장 document.cookie를에게

  1. 을 채 웁니다.
  2. 다음에 foobar.com을 방문하면 브라우저는 foobar.com에 대한 모든 쿠키를 서버에 제공합니다.
  3. 서버는 이러한 쿠키를 기반으로 DOM document.cookie 속성을 빌드합니다.

B) 브라우저는 브라우저가 사용자 하드 드라이브에 foobar.com에 대한 쿠키를 저장 document.cookie를에게

  1. 을 채 웁니다.
  2. 다음에 foobar.com을 방문하면 서버가 HTML을 만들고 제공하는 작업을 계속합니다.
  3. 브라우저가 하드 드라이브의 모든 쿠키를 잡고 전후에 document.cookie를 채 웁니다.

나는 Varnish와 Squid와 같은 프록시 서버에서 쿠키 스트리핑이 쿠키에 영향을 줄 수있는 방법을 연구 중이므로이 정보에 관심이 있습니다. document.cookie가 서버 (위의 옵션 A)에 의해 만들어진 경우 프록시에 의한 쿠키 스트리핑이 document.cookie 속성에 영향을 미친다 고 가정합니다. 나는 파티가 Barnish 서버에서 쿠키를 제거하기위한 지침을 가지고 있기 때문에 생각하고 싶어하지만, 쿠키의 데이터는 요청에서 제거한 후에도 document.cookie에 계속 남아 있습니다.

이 질문은 쿠키가 첨부 된 요청이 캐시 된 데이터의 사용을 무효화하고 백 엔드 히트를 생성하므로 바니시 뒤에 웹 사이트가있는 사람들에게 특히 중요합니다.

+1

DOM 개체가 아닙니다 ... – Pointy

+0

http://en.wikipedia.org/wiki/HTTP_cookie - 브라우저는 모든 요청에 ​​도메인을 추가하여 모든 쿠키를 보냅니다. 서버는 쿠키를 추가하거나 삭제할 수 있습니다. document.cookie는 클라이언트 쪽 스크립트에 액세스 할 수있는 쿠키의 브라우저 복사본입니다. 쿠키가 내가 모르는 DOM 객체가되기를 바라는 이유는 무엇입니까? – mplungjan

+0

또한 (B), 더 많거나 적습니다. – Pointy

답변

2

DOM은 서버의 응답을 기반으로 브라우저에서 만들어지고 사용됩니다. 브라우저의 레이아웃 엔진 작업의 일부는 서버에서 반환 한 HTML을 DOM으로 구문 분석하는 것입니다. 불행하게도 다른 브라우저는 different layout engines을 사용하기 때문에 DOM 트리에 때때로 차이가 있습니다.

document.cookie는 구체적으로는 attribute of the DOM Level 1 spec입니다. 말했듯이 정답은 다소 차이가 있습니다 (B). 쿠키는 클라이언트가 서버에 보내는 요청의 일부로 패키징되며 서버는 응답으로 쿠키를 설정할 수 있지만 결국에는 모두 클라이언트 측에 있습니다.

1

서버는 데이터를 해석하고 DOM 트리를 작성하는 브라우저로 데이터를 보냅니다. 쿠키는 데이터와 함께 전송되며 DOM에 내장되지 않고 대신 로컬 시스템에 저장됩니다. 기본적으로 브라우저는 컴퓨터의 쿠키를 조작 할 수 있습니다. 서버는 발급 된 모든 쿠키를 조작 할 수 있습니다.