Header fields should be case insensitive (RFC 7230 §3.2, RFC 9110 §5.1)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- rust
- Lĩnh vực
- api, networking
Hướng nghiên cứu
Bắt đầu bằng cách kiểm tra hành vi của HeaderMap::get và HeaderMap::insert cùng với HeaderName::from_static, sử dụng các ví dụ phân biệt chữ hoa chữ thường trong issue làm trường hợp tái hiện. Công việc được hoàn tất khi việc truy xuất tên header chấp nhận cách viết hoa khác nhau, from_static không còn panic đối với các tên trường hợp lệ và cách viết hoa ban đầu vẫn được giữ nguyên.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
I'm working with http::HeaderMap and noticed that HeaderMap::get, HeaderMap::insert, and HeaderName::from_static all seem to be case sensitive (in fact, the latter panics:
HeaderName::from_static("Content-Type")
panics with:
index out of bounds: the len is 0 but the index is 0
while:
HeaderName::from_static("content-type")
does not.
This goes against the HTTP spec requiring case-insensitive handling of header values:
- RFC 7230 §3.2
Each header field consists of a case-insensitive field name followed by a colon (":"), optional leading whitespace, the field value, and optional trailing whitespace.
- RFC 9110 §5.1
Field names are case-insensitive...
IMO, this is distinct from #670, and in fact case-insensitive keys should solve that issue as well, while not requiring the original cases to be changed.
It looks like crates like case_insensitive_hashmap and unicase are examples of case-insensitive String handling.
Is there any way to just make the HeaderMap case-insensitive for retrieval? That would preserve original case as well as allow any case for HeaderMap::get to meet the spec and prevent errors.
- Ngôn ngữ chính
- Rust
- Star
- 1.4k
- Fork
- 378
- Merge trung bình
- 1 ngày 21 giờ
- Pull request đã merge (30 ngày)
- 5
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
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 hyperium/http
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 62/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 58/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 62/100
Tất cả issue của hyperium/http
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
nautechsystems/nautilus_trader#5095 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
stellar/rs-soroban-env#1739 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
bug good first issue package: quic
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100