English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Este artigo exemplifica o uso de Cookie no Go. Compartilho com vocês para referência, conforme a seguir:
O desenvolvimento web não pode evitar o contato com cookies. A biblioteca http do Go também oferece operações relacionadas a 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 }
O campo Name é o nome do cookie, o Value é seu valor, e os campos Path e Domain são o escopo de armazenamento do cookie. Expires é o tempo de expiração do cookie, se não for configurado, então é um cookie de sessão, ou seja, o cookie é válido para a sessão do navegador, e é excluído imediatamente após o fechamento do navegador.
Configuração de Cookie
cookie é um conteúdo do header, portanto pode ser configurado usando o método Header da resposta.
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()) }
Aqui também pode ser testada a diferença entre os métodos Set e Add. Claro, como no upload de arquivos, o Go também oferece funções úteis comuns.
http.SetCookie(w, &c1) http.SetCookie(w, &c2)
O método SetCookie do http também pode configurar cookie, então não importa a ordem de precedência entre Set e Add, claro, o segundo parâmetro é um ponteiro para um objeto Cookie. Após configurar o cookie, a próxima coisa a fazer é ler o cookie.
Ler Cookie
Existem muitos métodos para ler cookie, o cookie está encapsulado no header, claro, pode ser processado pelo método header.
func getCookieHandler(w http.ResponseWriter, r *http.Request) { h := r.Header["Cookie"] fmt.Fprintln(w, h) }
Além de usar o método Header, também pode usar o método Request:
func getCookieHandler(w http.ResponseWriter, r *http.Request) { c1, err := r.Cookie("first_cookie") if err != nil{ fmt.Fprintln(w, "Não foi possível obter cookie") } cs := r.Cookies() fmt.Fprintln(w, c1) fmt.Fprintln(w, cs) }
Ao acessar, você pode notar que r.Cookie retorna o par de valor para a chave específica, enquanto r.Cookies retorna o valor de todos os pares de chave de cookie.
Cookie e Mensagem
O cookie tem muitos usos, geralmente registra algumas informações do cliente, usadas para autenticação de usuário. Agora precisamos usar o cookie para um pequeno recurso---Mensagem. Geralmente, após o envio de uma solicitação web, a resposta retorna dados, também pode ser configurada algumas mensagens para referenciar o usuário.
func setMessageHandler(w http.ResponseWriter, r *http.Request) { msg := []byte("Olá Mundo") 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, "Nenhuma mensagem encontrada") } } 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)) } }
A função setMessageHandler é simples, cria uma instância de cookie, escreve a mensagem no cookie e retorna ao cliente.
getMessageHandler lê primeiro o cookie com a chave flash, se não encontrar conteúdo, significa que a mensagem não existe, caso contrário, cria outro cookie, define o tempo de expiração aqui igual ao tempo de limpeza do cookie. Em seguida, retorna a mensagem lida para o cliente. Conclui a comunicação de mensagem.
Resumo
Discutimos a aplicação básica de cookies no Go. Atualmente, no desenvolvimento web, as pessoas estão cada vez mais prestando atenção à segurança da rede, portanto, a segurança dos cookies também é um conteúdo que os usuários se preocupam. A encapsulação nativa de cookie do Go é relativamente simples. A comunidade do Go desenvolveu muitos rolos, implementando secure cookie, por exemplo, gorilla/Biblioteca securecookie. Durante o desenvolvimento real, pode-se usar algumas bibliotecas ou pacotes de terceiros para completar as funções.
Espero que o conteúdo deste artigo ajude a todos a programar em Go.
Declaração: O conteúdo deste artigo é de origem na internet, pertencente ao respectivo detentor dos direitos autorais, submetido voluntariamente por usuários da internet e carregado automaticamente. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidades legais relacionadas. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas relevantes. Aos descobrir, o site deletará imediatamente o conteúdo suspeito de violação de direitos autorais.)