parse_header_links drops parameters when a value contains '=' or a quoted ';'
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Empieza en src/requests/utils.py, en parse_header_links, e inspecciona el análisis de los parámetros. Añade pruebas de regresión para valores que contengan = y para valores entre comillas que contengan ;, y luego ejecuta las pruebas pertinentes para esta utilidad. Se considerará terminado cuando ambas reproducciones conserven todos los parámetros y sus valores completos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
requests.utils.parse_header_links silently drops Link header parameters in two cases.
1. Parameter value containing =
In src/requests/utils.py, key, value = param.split("=") raises ValueError when the value contains =. The except ValueError: break then discards every remaining parameter.
2. ; inside a quoted value
params.split(";") ignores quoting, so a quoted value containing ; is truncated and the rest is lost.
Repro
from requests.utils import parse_header_links as p
p('<https://a/b>; rel="next"; title="x=y"; type="t"')
# actual: [{'url': 'https://a/b', 'rel': 'next'}] # title and type missing
# expected: [{'url': 'https://a/b', 'rel': 'next', 'title': 'x=y', 'type': 't'}]
p('<https://a/b>; title="a;b"; rel=next')
# actual: [{'url': 'https://a/b', 'title': 'a'}] # rel missing, title truncated
# expected: [{'url': 'https://a/b', 'title': 'a;b', 'rel': 'next'}]
Suggested fix
Use param.split("=", 1) and split parameters in a quote-aware way. I'm happy to open a PR with tests if this is welcome.
Checked on current main. I searched existing issues (#2250, #2707, #7177 are related to other cases) and found none covering this.
- Lenguaje dominante
- Python
- Estrellas
- 54.7k
- Forks
- 10.8k
- Merge medio
- 18 min
- PR fusionados (30 d)
- 1
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de psf/requests
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
`iter_lines(decode_unicode=True, delimiter=<str>)` raises `TypeError` when `Response.encoding` is `None`Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
get_encoding_from_headers treats any content type containing 'text' as text/* (ISO-8859-1)Posiblemente ocupada @suyashgitt la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Invalid `params` type (e.g. int) raises misleading "TypeError: Cannot mix str and non-str arguments"Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Todos los issues de psf/requests
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
OCA/account-invoicing#2529 ·
Los mantenedores suelen responder en 1 día
-
area/ci
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
ImageGen generate-batch aborts valid JSONL jobs containing a Unicode line separator in poster textAbiertobug imagen skills
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Email validation accepts a trailing newlinePosiblemente ocupada @marcello-pichini la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día