parse_header_links drops parameters when a value contains '=' or a quoted ';'
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 78/100
Hướng nghiên cứu
Bắt đầu tại src/requests/utils.py, ở parse_header_links, và kiểm tra việc phân tích cú pháp tham số. Thêm các kiểm thử hồi quy cho giá trị chứa = và giá trị được đặt trong dấu ngoặc kép có chứa ;, sau đó chạy các kiểm thử liên quan đến tiện ích này. Công việc hoàn tất khi cả hai trường hợp tái hiện đều giữ nguyên mọi tham số và toàn bộ giá trị của chúng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Python
- Star
- 54.7k
- Fork
- 10.8k
- Merge trung bình
- 18 phút
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của psf/requests
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
`iter_lines(decode_unicode=True, delimiter=<str>)` raises `TypeError` when `Response.encoding` is `None`Có thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
-
get_encoding_from_headers treats any content type containing 'text' as text/* (ISO-8859-1)Có thể đã có người làm @suyashgitt đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
Invalid `params` type (e.g. int) raises misleading "TypeError: Cannot mix str and non-str arguments"Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
OCA/account-invoicing#2529 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area/ci
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
ImageGen generate-batch aborts valid JSONL jobs containing a Unicode line separator in poster textĐang mởbug imagen skills
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Email validation accepts a trailing newlineCó thể đã có người làm @marcello-pichini đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày