---
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`.
