//ShowAllTasksFunc is used to handle the "/" URL which is the default ons
func ShowAllTasksFunc(w http.ResponseWriter, r *http.Request){
if r.Method == "GET" {
context := db.GetTasks("pending") //true when you want non deleted notes
if message != "" {
context.Message = message
}
context.CSRFToken = "abcd"
message = ""
expiration := time.Now().Add(365 * 24 * time.Hour)
cookie := http.Cookie{Name: "csrftoken",Value:"abcd",Expires:expiration}
http.SetCookie(w, &cookie)
homeTemplate.Execute(w, context)
} else {
message = "Method not allowed"
http.Redirect(w, r, "/", http.StatusFound)
}
}
Hay una diferencia básica entre Requests
y ResponseWriter
, una solicitud es lo que un navegador enviará como
Host: 127.0.0.1:8081
User-Agent: ...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://127.0.0.1:8081/
Cookie: csrftoken=abcd
Connection: keep-alive
y una respuesta es lo que el controlador enviará, algo así como:
Content-Type: text/html; charset=utf-8
Date: Tue, 12 Jan 2016 16:43:53 GMT
Set-Cookie: csrftoken=abcd; Expires=Wed, 11 Jan 2017 16:43:53 GMT
Transfer-Encoding: chunked
<html>...</html>
Cuando el navegador hará una petición, incluiremos la cookie para ese dominio, ya que las cookies se almacenan dominio sabia y no se puede acceder a partir de dominios cruzados, si se establece una cookie como HTTP solo puede accederse desde el sitio web que lo establece a través de HTTP y no a través de JS.
Por eso, cuando la obtención de información de las cookies puede hacerlo a partir del método r.Cookie, como este
cookie, _ := r.Cookie("csrftoken")
if formToken == cookie.Value {
https://github.com/thewhitetulip/Tasks/blob/master/views/addViews.go#L72-L75
Pero cuando se va a establecer una cookie, usted tiene que hacerlo en el método del escritor de respuestas, la solicitud es un objeto de solo lectura al que respondemos, lo consideramos como un mensaje de texto que obtienes de alguien, es una solicitud, solo puedes obtenerlo, lo que escribes es una respuesta, por lo que puede escribir una cookie en
para más Detalles: https://thewhitetulip.gitbooks.io/webapp-with-golang-anti-textbook/content/content/2.4workingwithform.html
Gracias.Eso parece funcionar. Estaba mirando erróneamente http://golang.org/pkg/net/http/#Request.AddCookie anteriormente – Tech163
Sí, es confuso. Necesitaría Request.AddCookie si su programa go actúa como un cliente HTTP y desea enviar un valor de cookie al servidor HTTP ... –