Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

process_response marks the session accessed, so every response gets Vary: Cookie

Abierto
#480 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

  • #481 de @r3wretrhy — cerrado sin fusionar

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend

Línea de trabajo

Start by reproducing the issue with Quart's test client and inspect Quart.process_response, then compare the websocket counterpart where session_ = ctx.session is also used. Update both paths so untouched sessions do not produce Vary: Cookie while session-using requests retain the header; verify both behaviors with regression tests.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Quart.process_response reads the session through the ctx.session property:

session_ = ctx.session
if not self.session_interface.is_null_session(session_):
    await self.ensure_async(self.session_interface.save_session)(
        self, session_, response
    )

That property sets session.accessed = True, so SecureCookieSessionInterface.save_session then adds Vary: Cookie to every response. This includes views that never touch the session, and static files. As a result, no shared cache or CDN will store them.

Minimal reproduction (Quart 0.23.1, also current main):

import asyncio

from quart import Quart

app = Quart(__name__)
app.secret_key = "not-secret"


@app.get("/")
async def index() -> str:
    return "this view never touches the session"


async def main() -> None:
    response = await app.test_client().get("/")
    print("Vary:", response.headers.get("Vary"))


asyncio.run(main())

Output: Vary: Cookie. The equivalent Flask 3.1.3 app prints Vary: None, because Flask's process_response reads the private attribute instead:

if not self.session_interface.is_null_session(ctx._session):
    self.session_interface.save_session(self, ctx._session, response)

Proposed fix: do the same in Quart.process_response (and in the websocket counterpart, which has the same session_ = ctx.session line), so only a request that actually used the session varies on the cookie. I'm happy to open a PR.

Lenguaje dominante
Python
Estrellas
3.7k
Forks
209
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de pallets/quart

Todos los issues de pallets/quart

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.