Java.net.HttpCookie w Javie

Warunek wstępny - Ciastka

Wiele witryn internetowych wykorzystuje małe ciągi tekstowe zwane plikami cookie do przechowywania trwałego stanu po stronie klienta pomiędzy połączeniami. Pliki cookie są przesyłane z serwera do klienta i z powrotem w nagłówkach HTTP żądań i odpowiedzi. Pliki cookie mogą być wykorzystywane przez serwer do wskazania identyfikatorów sesji, zawartości koszyka, danych logowania, preferencji użytkownika i nie tylko. Obiekt HttpCookie reprezentuje plik cookie http, który przenosi informacje o stanie między serwerem a agentem użytkownika. Plik cookie jest powszechnie stosowany do tworzenia sesji stanowych. Istnieją 3 specyfikacje plików cookie http:

Klasa HttpCookie może akceptować wszystkie te 3 formy składni.

Konstruktor:

Tworzy plik cookie o określonej nazwie i wartości. Nazwa musi zawierać wyłącznie znaki alfanumeryczne ASCII i być zgodna z RFC 2965. Zgłasza wyjątek IllegalArgument, jeśli nazwa jest niepoprawna, lub wyjątek NullPointerException, jeśli nazwa ma wartość null. Wartością może być dowolna wartość, którą plik cookie chce przechowywać.

    Syntax :     public HttpCookie(String name   
String value)
Parameters :
name : name of cookie
value : value of cookie
Throws :
IllegalArgumentException : if name does not conform to RFC2965
NullPointerException : if name is null

Metody:

  1. analizować(): zwraca listę plików cookie przeanalizowaną na podstawie ciągu nagłówka. nagłówek musi zaczynać się od tokenu set-cookie lub set-cookie2 albo nie może w ogóle zawierać żadnego tokenu.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. wygasł(): zwraca wartość logiczną wskazującą, czy plik cookie wygasł, czy nie.
        Syntax :     public boolean hasExpired()  
  3. ustawKomentarz(): Służy do ustawienia krótkiego opisu opisującego przeznaczenie pliku cookie. Używa się go, aby zaprezentować użytkownikowi plik cookie.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. pobierz komentarz(): Zwraca opis pliku cookie lub wartość null, jeśli plik cookie nie zawiera komentarzy.
        Syntax :     public void getComment()  
  5. ustawKomentarzURL() : Służy do ustawienia krótkiego adresu URL komentarza opisującego cel pliku cookie. Jest używany, gdy przeglądarka prezentuje użytkownikowi plik cookie.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. pobierzKomentarzURL() : Zwraca komentarz URL pliku cookie lub wartość null, jeśli plik cookie nie zawiera komentarzy URL.
        Syntax :     public String getComment()  
  7. setDiscard() : Służy do ustawiania, czy agent użytkownika powinien odrzucić ten plik cookie, czy nie.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard(): Zwraca stan zmiennej odrzuconej ustawionej metodą setDiscard(). Mówiąc dokładniej, zwraca wartość true, jeśli UA ma odrzucić ten plik cookie, w przeciwnym razie zwraca wartość false.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Służy do określenia portów, z których może korzystać ten plik cookie.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList(): Zwraca listę portów, z których może korzystać ten plik cookie.
        Syntax :     public String getPortList()  
  11. ustawDomenę() : Określ domenę, w której ten plik cookie powinien być widoczny. Na przykład pliki cookie wysłane z serwletu pod adresem bali.vacations.com zwykle nie są zwracane przez przeglądarkę do stron pod adresem queensland.vacations.com. Jeśli witryna chciała, aby tak się stało, serwlety mogłyby określić plik cookie.setDomain(.vacations.com). Aby uniemożliwić serwerom ustawienie plików cookie dotyczących hostów spoza ich domeny, określona domena musi spełniać następujące wymagania: musi zaczynać się od kropki (np. .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. pobierzDomenę(): Zwraca domenę, w której widoczny jest ten plik cookie.
        Syntax :     public String getDomain()  
  13. setMaxAge() : używany do ustawiania maksymalnego wieku pliku cookie w sekundach. Określa maksymalny czas życia pliku cookie po utworzeniu. Wartości ujemne określają, że plik cookie wygaśnie natychmiast po zamknięciu przeglądarki.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Zwraca maksymalny wiek pliku cookie.
        Syntax :     public long getMaxAge()  
  15. ustawŚcieżkę() : Służy do określenia ścieżki do klienta, pod którą powinien zwrócić plik cookie. Ten plik cookie jest widoczny dla wszystkich stron i podkatalogów określonej ścieżki. Na przykład, jeśli serwer wysłał plik cookie z witryny http://ecommerce.site.com/toys/specials.html, przeglądarka wyśle ​​plik cookie z powrotem podczas łączenia się z witryną http://ecommerce.site.com/to/beginners.html, ale nie z witryną http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath(): Zwraca ścieżkę ustawioną dla tego pliku cookie.
        Syntax :     public String getPath()  
  17. Implementacja Java:
  18. Java
       // Java Program to illustrate various   // methods of java.net.HttpCookie class   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setComment() method      cookie  .  setComment  (  'Just for explanation'  );      // getComment() method      System  .  out  .  println  (  'Comment : '     +     cookie  .  getComment  ());      // setCommentURL() method      cookie  .  setCommentURL  (  '192.168.1.1'  );      // getCommentURL() method      System  .  out  .  println  (  'CommentURL : '     +     cookie  .  getCommentURL  ());      // setDiscard() method      cookie  .  setDiscard  (  true  );      // getDiscard() method      System  .  out  .  println  (  'Discard : '     +     cookie  .  getDiscard  ());      // setPortlist() method      cookie  .  setPortlist  (  '10018520'  );      // getPortList() method      System  .  out  .  println  (  'Ports: '     +     cookie  .  getPortlist  ());      // setDomain() method      cookie  .  setDomain  (  '.localhost.com'  );      // getDomain() method      System  .  out  .  println  (  'Domain : '     +     cookie  .  getDomain  ());      // setMaxAge() method      cookie  .  setMaxAge  (  3600  );      // getMaxAge() method      System  .  out  .  println  (  'Max Age : '     +     cookie  .  getMaxAge  ());      // setPath() method      cookie  .  setPath  (  '192.168.1.1/admin/index.html'  );      // getPath() method      System  .  out  .  println  (  'Path: '     +     cookie  .  getPath  ());      }   }   
  19. Wyjście
  20.  Comment : Just for explanation   
    CommentURL : 192.168.1.1
    Discard : true
    Ports: 10018520
    Domain : .localhost.com
    Max Age : 3600
    Path: 192.168.1.1/admin/index.html
  21. setSecure() : Wskazano, czy podczas wysyłania tego pliku cookie ma być używany bezpieczny protokół. Wartość domyślna to fałsz.
        Syntax :     public void setSecure(boolean secure)   
    Parameters:
    secure - If true the cookie can only be sent over a secure protocol like https.
    If false it can be sent over any protocol.
  22. getSecure() : Zwraca wartość true, jeśli ten plik cookie musi zostać wysłany przy użyciu bezpiecznego protokołu, w przeciwnym razie wartość false.
        Syntax :     public boolean getSecure()  
  23. getNazwa(): Zwraca nazwę pliku cookie.
           Syntax :     public String getName()  
  24. ustawWartość() : Przypisuje nową wartość do pliku cookie po inicjalizacji.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. uzyskaj wartość: Zwraca wartość pliku cookie.
        Syntax :     public String getValue()  
  26. getVersion() : Zwraca 0, jeśli plik cookie jest zgodny z oryginalną specyfikacją Netscape; 1, jeśli plik cookie jest zgodny z RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion() : Służy do ustawiania wersji protokołu plików cookie, z którego korzysta ten plik cookie.
        Syntax :    public void setVersion(int v)   
    throws IllegalArgumentException
    Parameters :
    v - 0 for original Netscape specification; 1 for RFC 2965/2109
    Throws :
    IllegalArgumentException - if v is neither 0 nor 1
  28. isHttpOnly(): Zwraca wartość true, jeśli plik cookie może być używany tylko przez http, tj. nie może być używany przez języki skryptowe, takie jak JS vb itp.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Służy do ustawiania, czy ten plik cookie jest tylko http, czy nie.
        Syntax :     public void setHttpOnly(boolean httpOnly)   
    Parameters :
    httpOnly - if true make the cookie HTTP only i.e. only visible as part
    of an HTTP request.
  30. domenaMatches() : Funkcja narzędziowa sprawdzająca, czy nazwa hosta znajduje się w domenie, czy nie.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. doString(): Konstruuje ciąg znaków reprezentujący ten plik cookie.
           Syntax :    public String toString()  
  32. równa się(): zwraca wartość true, jeśli dwa pliki cookie http są sobie równe, w przeciwnym razie zwraca wartość true.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode() : Zwróć kod skrótu tego pliku cookie http. Wynikiem jest suma wartości kodu skrótu trzech istotnych składników tego pliku cookie: nazwy domeny i ścieżki. Zastępuje hashCode w klasie Object.
        Syntax :     public int hashCode()  
  34. klon(): Utwórz i zwróć kopię tego obiektu. Zastępuje metodę klonowania klasy obiektu.
        Syntax :     public Object clone()  

Implementacja Java:

Java
   // Java Program to illustrate various   // methods of java.net.HttpCookie class   import     java.net.HttpCookie  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setSecure() method      cookie  .  setSecure  (  true  );      // getSecure() method      System  .  out  .  println  (  'Secure : '     +     cookie  .  getSecure  ());      // getName() method      System  .  out  .  println  (  'Name : '     +     cookie  .  getName  ());      // setValue() method : can be used to modify value of cookie.      cookie  .  setValue  (  '2'  );      // getvalue() method      System  .  out  .  println  (  'Value : '     +     cookie  .  getValue  ());      // setVersion() method      cookie  .  setVersion  (  1  );      // getVersion() method      System  .  out  .  println  (  'Version : '     +     cookie  .  getVersion  ());      // setHttPonly() method      cookie  .  setHttpOnly  (  true  );      // isHttpOnly() method      System  .  out  .  println  (  'is HTTP only : '     +     cookie  .  isHttpOnly  ());      // toString() method      System  .  out  .  println  (  'toString : '     +     cookie  .  toString  ());      // hashcode() method      System  .  out  .  println  (  'Hashcode : '     +     cookie  .  hashCode  ());      }   }   

Wyjście :

 Secure : true   
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432

Kolejny przykład pokazujący, w jaki sposób faktycznie wykorzystywane są pliki cookies przez serwery internetowe, w którym drukujemy szczegóły plików cookies przechowywanych przez www.facebook.com

Java
   import     java.io.IOException  ;   import     java.net.CookieHandler  ;   import     java.net.CookieManager  ;   import     java.net.CookieStore  ;   import     java.net.HttpCookie  ;   import     java.net.URL  ;   import     java.net.URLConnection  ;   import     java.util.List  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )     throws     IOException         {      String     urlString     =     'https://www.facebook.com/'  ;      // Create a default system-wide CookieManager      CookieManager     cookieManager     =     new     CookieManager  ();      CookieHandler  .  setDefault  (  cookieManager  );      // Open a connection for the given URL      URL     url     =     new     URL  (  urlString  );      URLConnection     urlConnection     =     url  .  openConnection  ();      urlConnection  .  getContent  ();      // Get CookieStore which is the default internal in-memory      CookieStore     cookieStore     =     cookieManager  .  getCookieStore  ();      // Retrieve all stored HttpCookies from CookieStore      List   <  HttpCookie  >     cookies     =     cookieStore  .  getCookies  ();      int     cookieIdx     =     0  ;      // Iterate HttpCookie object      for     (  HttpCookie     ck     :     cookies  )     {      System  .  out  .  println  (  '------ Cookie.'     +     ++  cookieIdx     +     ' -------'  );      // Get the cookie name      System  .  out  .  println  (  'Cookie name: '     +     ck  .  getName  ());      // Get the domain set for the cookie      System  .  out  .  println  (  'Domain: '     +     ck  .  getDomain  ());      // Get the max age of the cookie      System  .  out  .  println  (  'Max age: '     +     ck  .  getMaxAge  ());      // Get the path of the server      System  .  out  .  println  (  'Server path: '     +     ck  .  getPath  ());      // Get boolean if the cookie is being restricted to a secure      // protocol      System  .  out  .  println  (  'Is secured: '     +     ck  .  getSecure  ());      // Gets the value of the cookie      System  .  out  .  println  (  'Cookie value: '     +     ck  .  getValue  ());      // Gets the version of the protocol with which the given cookie is      // related.      System  .  out  .  println  (  'Cookie protocol version: '     +     ck  .  getVersion  ());      }      }   }   

Wyjście :

 ------------------ Cookie.1 ------------------   
Cookie name: fr
Domain: .facebook.com
Max age: 7775999
Server path: /
Is secured: true
Cookie value: 0Xj7tBSsWlmtXPo92..BZFC8G.qC.AAA.0.0.BZFC8G.AWUwiIgM
Cookie protocol version: 0

Odniesienie:

Oficjalna dokumentacja Java

Utwórz quiz