2010-07-07 2 views
10

안전 같은 이름의 쿠키를 사용하여 여러 번 (서블릿 API를-2.5) 같은 쿠키 이름으로 HttpServletResponse.addCookie()를 호출하는 것이 안전합니까?

HttpServletResponse.addCookie(); 

를 호출?

결정 론적 행동이 있다는 점에서 안전합니다. 후속 통화는 무시 (첫 번째 승리)하거나 후속 통화가 항상 쿠키 또는 그와 비슷한 것을 대체합니다.

예 :

HttpServletResponse response = ...; 
response.addCookie(new Cookie("foo", "bar")); 
response.addCookie(new Cookie("foo", "42")); 

값 브라우저에 전송되어 저장 될 것인가?

답변

6

업데이트 된 답변 - @skaffman 및 @Stephen C의 의견은 이것이 이상적인 방법이 아니라는 것을 보여줍니다. http://www.ietf.org/rfc/rfc2109.txt 상태

에서

은 RFC 사양 쌍 각 쿠키에 처음 와서해야 NAME = VALUE 속성 값. 쿠키에 이 두 번 이상 나타나는 경우 동작이 정의되지 않습니다.

설정 쿠키 : foo는 = 바
설정 쿠키 : Tomcat 서버에

, 동작은 브라우저로 전송 실제 헤더입니다 foo는 = 42

여기 foo가 덮어 쓰여집니다. 나중에 쿠키를 읽으면 42가됩니다.

+1

이 모든 것이 'HttpServletResponse'의 특정 구현이 무엇인가를한다는 것입니다. 그러나 API는 동작을 정의하지 않으므로 다른 구현체가 다른 작업을 수행 할 수 있습니다. – skaffman

+0

글쎄, O/P가 자신의 서버에서 동작을 확인하기 위해 시험해 보도록 제안했습니다. – JoseK

+2

글쎄, 그가 전혀하지 않는 것이 좋습니다. 잠재적 인 이식성 문제가 발생합니다. –

2

덧글 추가 - 같은 응답으로 같은 이름의 쿠키에 다른 하위 도메인을 설정하면 동작이 변경됩니다. 난 그냥 같은 이름을 가진 쿠키를 저장했지만 자바 1.6/파이어 폭스/사파리/크롬의 최신 버전에 다른 하위 도메인 내 맥에서 테스트하고, 예상대로 행동, 두 쿠키를 저장. 나는이 동작이 사양에 의해 보장되지 않는다는 것을 이해하지만 단지 그것을 알고 있으면 도움이 될 수 있다고 말합니다.

관련 문제