Java.net.HttpCookie in Java
Voraussetzung - Kekse
Viele Websites verwenden kleine Textzeichenfolgen, sogenannte Cookies, um den clientseitigen Zustand zwischen Verbindungen dauerhaft zu speichern. Cookies werden in den HTTP-Headern von Anfragen und Antworten vom Server zum Client und wieder zurück weitergeleitet. Cookies können von einem Server verwendet werden, um Sitzungs-IDs, Warenkorbinhalte, Anmeldeinformationen, Benutzereinstellungen und mehr anzuzeigen. Ein HttpCookie-Objekt stellt ein http-Cookie dar, das Statusinformationen zwischen Server und Benutzeragent überträgt. Cookies werden häufig zum Erstellen zustandsbehafteter Sitzungen verwendet. Es gibt 3 HTTP-Cookie-Spezifikationen:
Die HttpCookie-Klasse kann alle diese drei Syntaxformen akzeptieren.
Konstrukteur:
Erstellt ein Cookie mit dem angegebenen Namen und Wert. Der Name darf nur alphanumerische ASCII-Zeichen enthalten und RFC 2965 entsprechen. Es wird eine IllegalArgument-Ausnahme ausgelöst, wenn der Name nicht korrekt ist, oder eine NullPointerException, wenn der Name null ist. Der Wert kann alles sein, was ein Cookie speichern möchte.
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 nullMethoden:
- parse() : gibt eine Liste der aus der Header-Zeichenfolge analysierten Cookies zurück. Der Header muss mit dem Token „set-cookie“ oder „set-cookie2“ beginnen oder darf überhaupt kein Token enthalten.
Syntax : public static List parse(String header)
Parameters :
header : String to be parsed as cookies- hasExpired() : Gibt einen booleschen Wert zurück, der angibt, ob das Cookie abgelaufen ist oder nicht.
Syntax : public boolean hasExpired()- setComment() : Wird verwendet, um eine kurze Beschreibung festzulegen, die den Zweck des Cookies beschreibt. Es wird verwendet, wenn dem Benutzer das Cookie angezeigt wird.
Syntax : public void setComment(String purpose)
Parameters :
purpose : purpose of cookie- getComment() : Gibt die Beschreibung des Cookies zurück oder null, wenn das Cookie keine Kommentare enthält.
Syntax : public void getComment()- setCommentURL() : Wird verwendet, um eine kurze Kommentar-URL festzulegen, die den Zweck des Cookies beschreibt. Es wird verwendet, wenn der Browser dem Benutzer das Cookie präsentiert.
Syntax : public void setCommentURL(String purpose)
Parameters :
purpose : purpose of cookie- getCommentURL() : Gibt den URL-Kommentar des Cookies zurück oder null, wenn das Cookie keine URL-Kommentare hat.
Syntax : public String getComment()- setDiscard() : Wird verwendet, um festzulegen, ob der Benutzeragent dieses Cookie verwerfen soll oder nicht.
Syntax : public void setDiscard(Boolean discard)
Parameters :
discard : true if UA should discard otherwise false- getDiscard() : Gibt den Status der durch die setDiscard()-Methode festgelegten Discard-Variablen zurück. Genauer gesagt gibt es „true“ zurück, wenn UA dieses Cookie verwerfen soll, andernfalls „false“.
Syntax : public Boolean getDiscard()- setPortList() : Wird verwendet, um die Ports anzugeben, die dieses Cookie verwenden kann.
Syntax : public void setPortList(String portList)
Parameters :
portList : String of comma separated digits specifying the ports.- getPortList() : Gibt die Liste der Ports zurück, die dieses Cookie verwenden kann.
Syntax : public String getPortList()- setDomain() : Geben Sie die Domäne an, in der dieses Cookie sichtbar sein soll. Beispielsweise würden Cookies, die von einem Servlet auf bali.vacations.com gesendet werden, normalerweise nicht vom Browser an Seiten auf queensland.vacations.com zurückgegeben werden. Wenn die Site dies wünscht, könnten die Servlets cookie.setDomain(.vacations.com) angeben. Um zu verhindern, dass Server Cookies setzen, die für Hosts außerhalb ihrer Domäne gelten, muss die angegebene Domäne die folgenden Anforderungen erfüllen: Sie muss mit einem Punkt beginnen (z. B. .coreservlets.com).
Syntax : public void setDomain(String domain)
Parameters :
domain : String representing the domain in which this cookie is visible- getDomain() : Gibt die Domäne zurück, in der dieses Cookie sichtbar ist.
Syntax : public String getDomain()- setMaxAge() : Wird verwendet, um das maximale Alter des Cookies in Sekunden festzulegen. Es gibt die maximale Zeit nach der Erstellung des Cookies an, für die es aktiv bleibt. Negative Werte geben an, dass das Cookie abläuft, sobald der Browser beendet wird.
Syntax : public void setMaxAge(long age)
Parameters :
age : Max survive time in seconds- getMaxAge() : Gibt das maximale Alter des Cookies zurück.
Syntax : public long getMaxAge()- setPath() : Wird verwendet, um den Pfad zum Client anzugeben, an den er das Cookie zurückgeben soll. Dieses Cookie ist für alle Seiten und Unterverzeichnisse des angegebenen Pfads sichtbar. Wenn der Server beispielsweise das Cookie von http://ecommerce.site.com/toys/specials.html sendet, sendet der Browser das Cookie zurück, wenn er eine Verbindung zu http://ecommerce.site.com/to/beginners.html herstellt, nicht jedoch zu http://ecommerce.site.com/c/classic.html.
Syntax : public void setPath(String uri)
Parameters :
uri - a String specifying a path- getPath() : Gibt den für dieses Cookie festgelegten Pfad zurück.
Syntax : public String getPath()- Java-Implementierung:
- 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 ()); } }- Ausgabe
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- setSecure() : Gibt an, ob beim Senden dieses Cookies ein sicheres Protokoll verwendet werden soll. Der Standardwert ist falsch.
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.- getSecure() : Gibt „true“ zurück, wenn dieses Cookie von einem sicheren Protokoll gesendet werden muss, andernfalls „false“.
Syntax : public boolean getSecure()- getName() : Gibt den Namen des Cookies zurück.
Syntax : public String getName()- setValue() : Weist dem Cookie nach der Initialisierung einen neuen Wert zu.
Syntax : public void setValue(String newValue)
Parameters :
newValue - a String specifying the new value- getValue: Gibt den Wert des Cookies zurück.
Syntax : public String getValue()- getVersion() : Gibt 0 zurück, wenn das Cookie der ursprünglichen Netscape-Spezifikation entspricht; 1, wenn das Cookie RFC 2965/2109 entspricht
Syntax : public int getVersion()- setVersion() : Wird verwendet, um die Version des Cookie-Protokolls festzulegen, das dieses Cookie verwendet.
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- isHttpOnly() : Gibt „true“ zurück, wenn das Cookie nur von http verwendet werden kann, d. h. es kann nicht von Skriptsprachen wie JS vb usw. verwendet werden.
Syntax : public boolean isHttpOnly()- setHttpOnly() : Wird verwendet, um festzulegen, ob es sich bei diesem Cookie nur um HTTP handelt oder nicht.
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.- domainMatches() : Dienstprogrammfunktion zum Überprüfen, ob sich der Hostname in der Domäne befindet oder nicht.
Syntax : public static boolean domainMatches(String domain
String host)
Parameters :
domain : domain to check hostname with
host : host to check- toString() : Konstruiert eine String-Darstellung dieses Cookies.
Syntax : public String toString()- equal() : Gibt „true“ zurück, wenn zwei http-Cookies einander gleich sind, andernfalls „false“.
Syntax : public boolean equals(Object obj)- hashCode() : Gibt den Hash-Code dieses http-Cookies zurück. Das Ergebnis ist die Summe des Hash-Codewerts von drei wesentlichen Komponenten dieses Cookies: Name, Domäne und Pfad. Überschreibt hashCode in der Klasse Object.
Syntax : public int hashCode()- clone() : Erstellen Sie eine Kopie dieses Objekts und geben Sie sie zurück. Überschreibt die Klonmethode der Objektklasse.
Syntax : public Object clone()Java-Implementierung:
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 ()); } }Ausgabe :
Secure : true
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432Ein weiteres Beispiel, um zu zeigen, wie Cookies tatsächlich von Webservern verwendet werden, indem wir die Details der von www.facebook.com gespeicherten Cookies drucken
Javaimport 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 ()); } } }Ausgabe :
------------------ 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: 0Referenz:
Offizielle Java-DokumentationQuiz erstellen