English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dieser Artikel zeigt die Verwendung von Cookies in der Programmiersprache Go. Hier ist eine Zusammenstellung für alle zur Verfügung gestellt, wie folgt:
Webentwicklung kann nicht ohne die Interaktion mit Cookies auskommen. Die http-Bibliothek von Go bietet auch Operationen für Cookies.
type Cookie struct { Name string Value string Path string Domain string Expires time.Time RawExpires string MaxAge int Secure bool HttpOnly bool Raw string Unparsed []string }
Das Feld Name ist der Name des Cookies, Value ist sein Wert, der Rest ist der Speicherbereich des Cookies, bestehend aus Path und Domain. Expires ist das Ablaufdatum des Cookies, wird nicht gesetzt, dann ist es ein session-basierter Cookie, d.h. der Cookie ist nur während der Browser-Sitzung gültig und wird gelöscht, wenn der Browser geschlossen wird.
Cookie setzen
cookie ist ein Inhalt des Headers, daher kann die Header-Methode der Response verwendet werden, um den Cookie zu setzen.
func setCookieHandler(w http.ResponseWriter, r *http.Request) { c1 := http.Cookie{ Name: "first_cookie", Value: "vanyar", HttpOnly: true, } c2 := http.Cookie{ Name: "second_cookie", Value: "noldor", HttpOnly: true, } w.Header().Set("Set-Cookie", c1.String()) w.Header().Add("Set-Cookie", c2.String()) }
Hier kann auch der Unterschied zwischen den Methoden Set und Add getestet werden. Natürlich bietet Go, wie auch bei der Dateiupload,常用的工具函数。
http.SetCookie(w, &c1) http.SetCookie(w, &c2)
Die SetCookie-Methode von http kann auch Cookies setzen, daher ist es nicht notwendig, die Reihenfolge von Set und Add zu beachten, natürlich ist der zweite Parameter ein Zeiger auf ein Cookie-Objekt. Nachdem das Cookie gesetzt wurde, müssen Sie das Cookie lesen.
Lesen von Cookies
Es gibt viele Möglichkeiten, Cookies zu lesen, sie sind in Header verpackt, natürlich können sie auch durch Header-Methode behandelt werden.
func getCookieHandler(w http.ResponseWriter, r *http.Request) { h := r.Header["Cookie"] fmt.Fprintln(w, h) }
Man kann Header-Methode nicht verwenden, sondern auch Methoden von Request verwenden:
func getCookieHandler(w http.ResponseWriter, r *http.Request) { c1, err := r.Cookie("first_cookie") if err != nil{ fmt.Fprintln(w, "Kann Cookie nicht erhalten") } cs := r.Cookies() fmt.Fprintln(w, c1) fmt.Fprintln(w, cs) }
Wenn Sie die Seite besuchen, können Sie feststellen, dass r.Cookie das Paar Schlüssel-Wert für den Schlüssel zurückgibt, während r.Cookies das Paar Schlüssel-Wert für alle Cookies zurückgibt.
Cookie und Nachricht
Cookies haben viele Funktionen, sie werden normalerweise verwendet, um einige Informationen des Clients zu protokollieren, um die Benutzeranmeldung zu validieren. Jetzt müssen wir Cookies verwenden, um eine kleine Funktion zu implementieren---Nachricht. Oftens wird nach dem Absenden einer Web-Anfrage die Antwortdaten zurückgegeben, und einige Nachrichten können auch zur Benutzerreferenzierung festgelegt werden.
func setMessageHandler(w http.ResponseWriter, r *http.Request) { msg := []byte("Hello World") c := http.Cookie{ Name: "flash", Value:base64.URLEncoding.EncodeToString(msg), } http.SetCookie(w, &c) } func getMessageHandler(w http.ResponseWriter, r *http.Request) { c, err := r.Cookie("flash") if err != nil { if err == http.ErrNoCookie { fmt.Fprintln(w, "Keine Nachricht gefunden") } } else {}} rc := http.Cookie{ Name: "flash", MaxAge: -1, Expires:time.Unix(1, 0), } http.SetCookie(w, &rc) val, _ := base64.URLEncoding.DecodeString(c.Value) fmt.Fprintln(w, string(val)) } }
Die Funktion setMessageHandler ist sehr einfach, sie erstellt eine Cookie-Instanz, schreibt die Nachricht in das Cookie und gibt es dann an den Client zurück.
getMessageHandler liest zunächst den Cookie mit dem Schlüssel 'flash' aus. Wenn der Inhalt nicht gelesen werden kann, bedeutet dies, dass die Nachricht nicht existiert, andernfalls wird ein weiterer Cookie erstellt, dessen Ablaufzeit hier gleich dem Löschen des Cookies gesetzt wird. Anschließend wird die gelesene Nachricht an den Client zurückgegeben und die Nachrichtenkommunikation wird abgeschlossen.
Zusammenfassung
Wir haben die grundlegende Anwendung von Cookies in Go diskutiert. Heute wird in der Web-Entwicklung immer mehr Wert auf die Sicherheit des Netzwerks gelegt, daher wird auch die Sicherheit von Cookies zu einem Thema, das von den Benutzern beachtet wird. Die native Cookie-Abwicklung in Go ist relativ einfach. Die Community hat jedoch viele Wiederverwendbare Komponenten entwickelt, um sicherere Cookies zu implementieren, z.B. gorilla/Bibliothek securecookie. Bei der tatsächlichen Entwicklung können einige Drittanbieter-Bibliotheken oder -Pakete zur Erreichung von Funktionen eingesetzt werden.
Ich hoffe, dass dieser Artikel allen bei der Programmentwicklung in der Go-Sprache helfen wird.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem jeweiligen Urheber. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Sollten Sie verdächtige urheberrechtliche Inhalte feststellen, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @, wenn Sie eine Meldung senden, und fügen Sie relevante Beweise bei. Bei nachgewiesener Täuschung wird die Website den verdächtigen Inhalt sofort löschen.)