--- name: http_session_cookie_clear kind: function lang: go domain: infra version: "1.0.0" purity: impure signature: "func SessionCookieClear(w http.ResponseWriter, name string)" description: "Invalida la cookie de sesion en el browser fijando MaxAge=-1. Path='/', HttpOnly=true, SameSite=Lax. No retorna error porque http.SetCookie no falla en runtime." tags: [http, session, cookie, auth, logout, response] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: ["net/http"] params: - name: w desc: "ResponseWriter donde se escribe el header Set-Cookie" - name: name desc: "nombre de la cookie a invalidar (debe coincidir con el nombre usado al crearla)" output: "escribe el header Set-Cookie con MaxAge=-1 en w; sin valor de retorno" tested: true tests: - "cookie clear setea MaxAge negativo" - "cookie clear valor es vacio" - "header Set-Cookie contiene HttpOnly y SameSite=Lax" test_file_path: "functions/infra/http_session_cookie_clear_test.go" file_path: "functions/infra/http_session_cookie_clear.go" --- ## Ejemplo ```go func handleLogout(db *DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { token := infra.SessionTokenExtract(r, "my_session") if token != "" { _ = infra.SessionDelete(db.conn, token) } infra.SessionCookieClear(w, "my_session") w.WriteHeader(http.StatusNoContent) } } ``` ## Notas Extraido de apps/kanban/backend/auth.go. MaxAge=-1 hace que el browser elimine la cookie inmediatamente independientemente de la fecha Expires original. La funcion no retorna error porque `http.SetCookie` escribe directamente en los headers y nunca falla. Complemento de `http_session_cookie_set_go_infra`.