JavaTM Platform
Standard Ed. 6

java.net
클래스 HttpCookie

java.lang.Object 
  상위를 확장 java.net.HttpCookie
모든 구현된 인터페이스:
Cloneable


public final class HttpCookie
extends Object
implements Cloneable

HttpCookie 객체는, 서버와 사용자 에이전트와의 사이에 상태 정보를 전달하는 HTTP Cookie 를 나타냅니다. Cookie 는, 스테이트 풀 세션을 작성하는 목적으로 넓게 채용되고 있습니다.

HTTP Cookie 의 스펙에는 다음의 3 개가 있습니다.

Netscape 드래프트
RFC 2109 - http://www.ietf.org/rfc/rfc2109.txt
RFC 2965 - http://www.ietf.org/rfc/rfc2965.txt

HttpCookie 클래스는, 이것들 3 개의 형식의 구문을 모두 받아들일 수가 있습니다.

도입된 버젼:
1.6

생성자 의 개요
HttpCookie (String  name, String  value)
          지정된 이름과 값을 가지는 Cookie 를 구축합니다.
 
메소드의 개요
 Object clone ()
          이 객체의 카피를 작성해 돌려줍니다.
static boolean domainMatches (String  domain, String  host)
          있는 호스트명이 있는 도메인에 포함될지 어떨지를 체크하기 위한 유틸리티 메소드.
 boolean equals (Object  obj)
          2 개의 HTTP Cookie 가 동일한지 어떤지를 판정합니다.
 String getComment ()
          이 Cookie 의 목적을 설명하는 코멘트를 돌려줍니다.
 String getCommentURL ()
          이 Cookie 의 목적을 설명하는 코멘트 URL 를 돌려줍니다.
 boolean getDiscard ()
          Cookie 의 파기 속성을 돌려줍니다.
 String getDomain ()
          이 Cookie 로 설정된 도메인명을 돌려줍니다.
 long getMaxAge ()
          Cookie 의 최장 유효기간을 초수로 돌려줍니다.
 String getName ()
          Cookie 의 이름을 돌려줍니다.
 String getPath ()
          브라우저가 이 Cookie 를 돌려주는 앞이 되는, 서버상의 패스를 돌려줍니다.
 String getPortlist ()
          Cookie 의 포트 리스트 속성을 돌려줍니다.
 boolean getSecure ()
          브라우저가 시큐리티 보호된 프로토콜 경유에서만 Cookie 를 송신하고 있는 경우는 true, 브라우저가 어떠한 프로토콜을 사용해도 Cookie 를 송신할 수 있는 경우는 false 를 돌려줍니다.
 String getValue ()
          Cookie 의 값을 돌려줍니다.
 int getVersion ()
          이 Cookie 가 준거하는 프로토콜의 버젼을 돌려줍니다.
 boolean hasExpired ()
          이 HTTP Cookie 의 유효기간이 끊어져 있는지 어떤지를 보고합니다.
 int hashCode ()
          이 HTTP Cookie 의 해시 코드를 돌려줍니다.
static List <HttpCookie > parse (String  header)
          set-cookie 또는 set-cookie2 헤더 캐릭터 라인으로부터 Cookie 를 구축합니다.
 void setComment (String  purpose)
          Cookie 의 목적을 설명하는 코멘트를 지정합니다.
 void setCommentURL (String  purpose)
          Cookie 의 목적을 설명하는 코멘트 URL 를 지정합니다.
 void setDiscard (boolean discard)
          사용자 에이전트가 Cookie 를 무조건 파기해야할 것인가 제발을 지정합니다.
 void setDomain (String  pattern)
          이 Cookie 가 제시되는 도메인을 지정합니다.
 void setMaxAge (long expiry)
          Cookie 의 최장 유효기간을 초수로 설정합니다.
 void setPath (String  uri)
          클라이언트가 Cookie 를 돌려줄 필요가 있는 Cookie 의 패스를 지정합니다.
 void setPortlist (String  ports)
          Cookie 의 포트 리스트를 지정합니다.
 void setSecure (boolean flag)
          HTTPS 나 SSL 와 같은, 시큐리티 보호된 프로토콜을 사용하고 있는 경우에게만, Cookie 를 송신할지 어떨지를, 브라우저에 지시합니다.
 void setValue (String  newValue)
          Cookie 의 작성 후에, Cookie 에 새로운 값을 할당합니다.
 void setVersion (int v)
          이 Cookie 가 준거하는 Cookie 프로토콜의 버젼을 설정합니다.
 String toString ()
          이 Cookie 의 Cookie 헤더 캐릭터 라인 표현을 구축합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , wait , wait , wait
 

생성자 의 상세

HttpCookie

public HttpCookie(String  name,
                  String  value)
지정된 이름과 값을 가지는 Cookie 를 구축합니다.

이름은 RFC 2965 에 준거하고 있을 필요가 있습니다. 즉, ASCII 의 영수문자만을 포함해, 콤마, 세미콜론, 공백을 포함하지 못하고,$ 문자가 선두에 있어서는 되지 않습니다. Cookie 의 작성 후로 이름을 변경할 수 없습니다.

값에는 특히 제한은 없습니다. 그 값은 일반적으로, 서버에 있어서의 보고 의미가 있습니다. Cookie 의 값은, 작성 후에 setValue 메소드를 사용해 변경할 수 있습니다.

특히 지정하지 않는 한, Cookie 는 RFC 2965 의 Cookie 스펙에 따라 작성됩니다. 버젼을 변경하려면 setVersion 메소드를 사용합니다.

파라미터:
name - Cookie 의 이름을 지정하는 String
value - Cookie 의 값을 지정하는 String
예외:
IllegalArgumentException - Cookie 명에 부당한 문자가 포함되어 있는지, Cookie 명이 Cookie 프로토콜용으로서 예약되고 있는 토큰의 1 개인 경우
NullPointerException - namenull 의 경우
관련 항목:
setValue(java.lang.String) , setVersion(int)
메소드의 상세

parse

public static List <HttpCookie > parse(String  header)
set-cookie 또는 set-cookie2 헤더 캐릭터 라인으로부터 Cookie 를 구축합니다. RFC 2965 섹션 3.2. 2 의 set-cookie2 구문에 의하면, 1 개의 헤더행에 복수의 Cookie 정의를 포함할 수가 있습니다. 그래서, 이것은 다른 생성자 은 아니고, static 유틸리티 메소드가 되어 있습니다.

파라미터:
header - set-cookie 헤더를 지정하는 String. 헤더는, 「set-cookie」또는 「set-cookie2」토큰으로 시작되어 있는지, 개시 토큰을 전혀 가지지 않는가, 의 어느 쪽인가에 해야 한다
반환값:
헤더 작문자열로부터 해석된 Cookie 의 리스트
예외:
IllegalArgumentException - 헤더 캐릭터 라인이 Cookie 스펙의 구문에 위반하고 있는지, Cookie 명에 부당한 문자가 포함되어 있는지, Cookie 명이 Cookie 프로토콜용으로서 예약되고 있는 토큰의 1 개인 경우
NullPointerException - 헤더 캐릭터 라인이 null 의 경우

hasExpired

public boolean hasExpired()
이 HTTP Cookie 의 유효기간이 끊어져 있는지 어떤지를 보고합니다.

반환값:
이 HTTP Cookie 의 유효기간이 끊어져 있는 것을 나타내는 경우는 true. 그렇지 않은 경우는 false

setComment

public void setComment(String  purpose)
Cookie 의 목적을 설명하는 코멘트를 지정합니다. 코멘트는, 브라우저가 Cookie 를 사용자에게 표시하는 경우에 도움이 됩니다. Netscape 버젼 0 의 Cookie 에서는, 코멘트는 지원되지 않습니다.

파라미터:
purpose - 사용자에게 표시하는 코멘트를 지정하는 String
관련 항목:
getComment()

getComment

public String  getComment()
이 Cookie 의 목적을 설명하는 코멘트를 돌려줍니다. Cookie 에 코멘트가 없는 경우는,null 를 돌려줍니다.

반환값:
코멘트가 포함된 String. 코멘트가 없는 경우는 null
관련 항목:
setComment(java.lang.String)

setCommentURL

public void setCommentURL(String  purpose)
Cookie 의 목적을 설명하는 코멘트 URL 를 지정합니다. 코멘트 URL 는, 브라우저가 Cookie 를 사용자에게 표시하는 경우에 도움이 됩니다. 코멘트 URL 는 RFC 2965 전용입니다.

파라미터:
purpose - 사용자에게 표시하는 코멘트 URL 를 지정하는 String
관련 항목:
getCommentURL()

getCommentURL

public String  getCommentURL()
이 Cookie 의 목적을 설명하는 코멘트 URL 를 돌려줍니다. 이 Cookie 에 코멘트 URL 가 없는 경우는 null 를 돌려줍니다.

반환값:
코멘트 URL 가 포함된 String. 코멘트가 없는 경우는 null
관련 항목:
setCommentURL(java.lang.String)

setDiscard

public void setDiscard(boolean discard)
사용자 에이전트가 Cookie 를 무조건 파기해야할 것인가 제발을 지정합니다. 이것은, RFC 2965 전용의 속성입니다.

파라미터:
discard - true 는, Cookie 를 무조건 파기하는 것을 나타내는
관련 항목:
getDiscard()

getDiscard

public boolean getDiscard()
Cookie 의 파기 속성을 돌려줍니다.

반환값:
이 Cookie 의 파기 속성을 나타내는 boolean
관련 항목:
setDiscard(boolean)

setPortlist

public void setPortlist(String  ports)
Cookie 의 포트 리스트를 지정합니다. 이 리스트는, Cookie 를 Cookie 헤더내에 넣어 돌려 보낼 때에 사용할 수 있는 포트 (복수가능)를 제약합니다.

파라미터:
ports - 포트 리스트를 지정하는 String. 이것은 숫자의 콤마 단락 리스트인
관련 항목:
getPortlist()

getPortlist

public String  getPortlist()
Cookie 의 포트 리스트 속성을 돌려줍니다.

반환값:
포트 리스트가 포함된 String. 존재하지 않는 경우는 null
관련 항목:
setPortlist(java.lang.String)

setDomain

public void setDomain(String  pattern)
이 Cookie 가 제시되는 도메인을 지정합니다.

도메인명의 형식은, RFC 2965 로 지정되고 있습니다. 도메인명은 . foo.com 와 같이 닷으로 시작되어, 지정된 도메인 네임 시스템 (DNS)의 존내의 서버가 그 Cookie 를 참조할 수 있는 것을 나타내고 있습니다. 예를 들어 이 경우,www.foo.com 는 Cookie 를 참조할 수 있습니다만,a.b.foo.com 는 Cookie 를 참조할 수 없습니다. 특히 지정하지 않는 한, Cookie 는 그것을 송신한 서버에게만 돌려주어집니다.

파라미터:
pattern - 이 Cookie 가 가시가 되는 도메인명이 포함된 String. 형식은 RFC 2965 에 따르는
관련 항목:
getDomain()

getDomain

public String  getDomain()
이 Cookie 로 설정된 도메인명을 돌려줍니다. 도메인명의 형식은, RFC 2965 에 의해 규정되고 있습니다.

반환값:
도메인명이 포함된 String
관련 항목:
setDomain(java.lang.String)

setMaxAge

public void setMaxAge(long expiry)
Cookie 의 최장 유효기간을 초수로 설정합니다.

정의 값을 지정하면(자), 그 초수가 경과한 뒤에 Cookie 가 기한 마감이 됩니다. 이 값은, Cookie 의 현재의 유효기간은 아니고, Cookie 의 기한이 지날 때까지의 「최장」의 유효기간인 것에 주의해 주세요.

0 보다 작은 값을 지정하면(자), Cookie 는 지속적으로 보관 유지되지 않고 , Web 브라우저가 종료했을 때에 삭제됩니다. 0 의 값을 지정하면(자), Cookie 가 삭제됩니다.

파라미터:
expiry - Cookie 의 최장 유효기간을 초수로 지정하는 정수. 0 의 경우, Cookie 는 곧바로 파기 되는 것이 당연하다. 그 이외의 경우, Cookie 의 최장 유효기간은 미정도리가 되는
관련 항목:
getMaxAge()

getMaxAge

public long getMaxAge()
Cookie 의 최장 유효기간을 초수로 돌려줍니다. 디폴트는 -1 입니다. 이것은, 브라우저가 종료 될 때까지 Cookie 가 지속하는 것을 나타냅니다.

반환값:
Cookie 의 최장 유효기간을 초수로 지정하는 정수
관련 항목:
setMaxAge(long)

setPath

public void setPath(String  uri)
클라이언트가 Cookie 를 돌려줄 필요가 있는 Cookie 의 패스를 지정합니다.

지정된 디렉토리내의 모든 페이지와 그 디렉토리의 서브 디렉토리내의 모든 페이지에 대해서, Cookie 가 가시가 됩니다. Cookie 의 패스에는 그 Cookie 를 설정하는 서브 렛을 포함해 주세요. 예를 들어,/catalog 를 지정했을 경우, 서버상의 /catalog 아래에 있는 모든 디렉토리에 대해서, Cookie 가 가시가 됩니다.

Cookie 의 경로명의 설정 방법법에 대한 자세한 것은, RFC 2965 로 조사해 주세요. RFC 2109 는, 인터넷으로 공개되고 있습니다.

파라미터:
uri - 패스를 지정하는 String
관련 항목:
getPath()

getPath

public String  getPath()
브라우저가 이 Cookie 를 돌려주는 앞이 되는, 서버상의 패스를 돌려줍니다. 서버상의 모든 서브 패스에 대해서, Cookie 가 가시가 됩니다.

반환값:
서브 렛명을 포함한 패스를 지정하는 String. 예: /catalog
관련 항목:
setPath(java.lang.String)

setSecure

public void setSecure(boolean flag)
HTTPS 나 SSL 와 같은, 시큐리티 보호된 프로토콜을 사용하고 있는 경우에게만, Cookie 를 송신할지 어떨지를, 브라우저에 지시합니다.

디폴트 값는 false 입니다.

파라미터:
flag - true 의 경우, 시큐리티 보호된 프로토콜을 사용하고 있는 경우에게만, 브라우저로부터 서버에 Cookie 가 송신된다. false 의 경우, 임의의 프로토콜상에서 송신되는
관련 항목:
getSecure()

getSecure

public boolean getSecure()
브라우저가 시큐리티 보호된 프로토콜 경유에서만 Cookie 를 송신하고 있는 경우는 true, 브라우저가 어떠한 프로토콜을 사용해도 Cookie 를 송신할 수 있는 경우는 false 를 돌려줍니다.

반환값:
브라우저가 임의의 표준 프로토콜을 사용할 수 있는 경우는 true, 그 이외의 경우는 false
관련 항목:
setSecure(boolean)

getName

public String  getName()
Cookie 의 이름을 돌려줍니다. 작성 후로 이름을 변경할 수 없습니다.

반환값:
Cookie 의 이름을 지정하는 String

setValue

public void setValue(String  newValue)
Cookie 의 작성 후에, Cookie 에 새로운 값을 할당합니다. 바이너리치를 사용하는 경우는, BASE64 인코딩의 사용을 추천합니다.

버젼 0 의 Cookie 의 경우, 공백, 꺽쇄묶음, 괄호, 등호, 콤마, 이중 인용부호, slash, 물음표, 단가 기호, 구두점, 및 세미콜론을 값에 포함하지 않게 해 주세요. 빈 상태(empty)의 값을 지정하면(자), 브라우저간에 다른 동작을 할 가능성이 있습니다.

파라미터:
newValue - 새로운 값을 지정하는 String
관련 항목:
getValue()

getValue

public String  getValue()
Cookie 의 값을 돌려줍니다.

반환값:
Cookie 의 현재의 값이 포함된 String
관련 항목:
setValue(java.lang.String)

getVersion

public int getVersion()
이 Cookie 가 준거하는 프로토콜의 버젼을 돌려줍니다. 버젼 1 은 RFC 2965/2109 에 준거해, 버젼 0 은 Netscape 에 의한 원의 Cookie 드래프트 스펙에 준거합니다. 브라우저로부터 제공되는 Cookie 는, 그 브라우저의 Cookie 버젼을 사용 및 식별합니다.

반환값:
Cookie 가 원의 Netscape 스펙에 준거하는 경우는 0, RFC 2965/2109 에 준거하는 경우는 1
관련 항목:
setVersion(int)

setVersion

public void setVersion(int v)
이 Cookie 가 준거하는 Cookie 프로토콜의 버젼을 설정합니다. 버젼 0 은 원의 Netscape Cookie 스펙에 준거합니다. 버젼 1 은 RFC 2965/2109 에 준거합니다.

파라미터:
v - Cookie 가 원의 Netscape 스펙에 준거해야 하는 경우는 0, RFC 2965/2109 에 준거해야 하는 경우는 1
예외:
IllegalArgumentException - v 가 0, 1 의 머지않아도 아닌 경우
관련 항목:
getVersion()

domainMatches

public static boolean domainMatches(String  domain,
                                    String  host)
어느 호스트명이 있는 도메인에 포함될지 어떨지를 체크하기 위한 유틸리티 메소드.

이 개념에 대해서는, Cookie 스펙내에서 설명되고 있습니다. 이 개념을 이해하려면 , 우선, 몇개의 용어를 정의해 둘 필요가 있습니다.

유효 호스트명 = 호스트명에 닷이 포함되는 경우는 hostname,
                 닷이 포함되지 않는 경우는 hostname.local

호스트 A 의 이름이 호스트 B 의 이름과 도메인 일치하는 것은, 다음중 한쪽이 성립되는 경우입니다.

  • 그러한 호스트 명문자열을 캐릭터 라인 비교한 결과가 동일해진다
  • A 가 HDN 캐릭터 라인이며, NB 의 형식을 가진다. 여기서, N 는 빈 상태(empty)이 아닌 이름 캐릭터 라인이며, B 는 . B'의 형식을 가져, B'는 HDN 캐릭터 라인이다. (따라, x.y.com 는,. Y.com 에는 도메인 일치하지만, Y.com 에는 도메인 일치하지 않는다. )

호스트가 도메인에 포함되지 않는다 (RFC 2965 섹션 3.3. 2)의는, 다음중 한쪽이 성립되는 경우입니다.

  • Domain 속성의 값에 묻어 닷이 포함되지 않고, 그 값이 . local 는 아니다.
  • 요구 호스트로부터 파생한 유효 호스트명이, Domain 속성과 도메인 일치하지 않는다.
  • 요구 호스트가 HDN (IP 주소는 아니다)이며, HD 의 형식을 가진다. 여기서, D 는 Domain 속성의 값이며, H 는 1 개 이상의 닷을 포함한 캐릭터 라인이다.

례:

  • 요구 호스트 y.x.foo.com 로부터의 Domain=.foo.com 의 Set-Cookie2 는 거부된다. 왜냐하면, H 는 y.x 이며, 닷이 포함되기 때문이다.
  • 요구 호스트 x.foo.com 로부터의 Domain=.foo.com 의 Set-Cookie2 는 받아들여진다.
  • Domain=.com 또는 Domain=.com. (을)를 포함한 Set-Cookie2 는 항상 거부된다. 왜냐하면, 매입 닷이 존재하지 않기 때문에이다.
  • Domain=ajax.com 를 포함한 Set-Cookie2 는 받아들여져 Domain 의 값은 . ajax.com 이다고 보인다. 왜냐하면, 값의 선두에는 닷이 추가되기 때문이다.
  • 요구 호스트 example 로부터의 Domain=.local 의 Set-Cookie2 는 받아들여진다. 왜냐하면, 요구 호스트의 유효 호스트명은 example.local 이며, example.local 는 . local 에 도메인 일치하기 때문이다.

파라미터:
domain - 호스트명의 체크에 사용하는 도메인명
host - 문제의 호스트명
반환값:
그것들이 도메인 일치하는 경우는 true, 그 이외의 경우는 false

toString

public String  toString()
이 Cookie 의 Cookie 헤더 캐릭터 라인 표현을 구축합니다. 그 형식은, 대응하는 Cookie 스펙으로 정의되고 있는 것입니다만, 선두의 「Cookie」토큰은 붙지 않습니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
Cookie 의 캐릭터 라인 형식. 이 캐릭터 라인은 정의된 형식을 가진다

equals

public boolean equals(Object  obj)
2 개의 HTTP Cookie 가 동일한지 어떤지를 판정합니다.

결과가 true 가 되는 것은, 2 개의 Cookie 가 같은 도메인 (대문자, 소문자의 구별 없음)으로부터 보내져 온 것이어, 같은 이름 (대문자, 소문자의 구별 없음)을 가져, 같은 패스 (대문자, 소문자의 구별 있어)를 가지는 경우만입니다.

오버라이드(override):
클래스 Object 내의 equals
파라미터:
obj - 비교 대상의 참조 객체
반환값:
2 개의 HTTP Cookie 가 서로 동일한 경우는 true. 그렇지 않은 경우는 false
관련 항목:
Object.hashCode() , Hashtable

hashCode

public int hashCode()
이 HTTP Cookie 의 해시 코드를 돌려줍니다. 결과는, 이 Cookie 의 3 개의 주요 컴퍼넌트인 이름, 도메인, 패스의 해시 코드값를 합계한 것이 됩니다. 즉, 해시 코드는 다음의 식의 값입니다.
getName(). toLowerCase(). hashCode()
+ getDomain(). toLowerCase(). hashCode()
+ getPath(). hashCode()

오버라이드(override):
클래스 Object 내의 hashCode
반환값:
이 HTTP Cookie 의 해시 코드
관련 항목:
Object.equals(java.lang.Object) , Hashtable

clone

public Object  clone()
이 객체의 카피를 작성해 돌려줍니다.

오버라이드(override):
클래스 Object 내의 clone
반환값:
이 HTTP Cookie 의 복제
관련 항목:
Cloneable

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.