HTTP::Request->parse() handles leading double slashes in path incorrectly [rt.cpan.org #59570]
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 45/100
Hướng nghiên cứu
Bắt đầu với HTTP::Request->parse và tái hiện trường hợp request-target được nêu trong issue, đồng thời so sánh kết quả của nó với các ví dụ URI. Kiểm tra các dạng request-target của HTTP/1.1 được mô tả trong báo cáo; công việc được xem là hoàn tất khi dấu gạch chéo kép ở đầu một đường dẫn tuyệt đối không được xử lý như một authority, trong khi các dạng khác vẫn tiếp tục được phân tích chính xác.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Migrated from rt.cpan.org#59570 (status was 'new')
Requestors:
From [email protected] on 2010-07-20 16:09:22:
use strict;
use URI;
use HTTP::Request;
my $request = HTTP::Request->parse('GET //foo/bar/baz?uvw#xyz HTTP/1.1');
warn $request->uri->authority;
my $uri = URI->new('//foo/bar/baz?uvw#xyz');
warn $uri->authority;
__END__
Output is "foo" both times. With libwww-perl 5.827 and URI 1.38.
The problem is caused by URI being too relaxed about the format of a
URI. But I guess that cannot be fixed because it would break a lot of
existing code.
I think HTTP::Request->parse must be changed. The Request-URI of the
Request-Line in HTTP/1.1 is either a *, an absolute URI, an absolute
path, or an authority.
Unfortunately my version of URI is too smart for being fixed here:
my $uri = URI->new;
$uri->path('//foo/bar/baz');
warn $uri->authority;
This spits out a friendly warning that a leading double slash is
confusing, and it then happily forgets that this is just the path, not
an authority.
In fact, a leading double slash in a path is not really confusing but it
is perfecly legal and all browsers send such requests, and they conform
to HTTP here.
I have no idea how this could be fixed in a clean way without giving up
the blessed-scalar-approach for URI. But it basically renders the
HTTP::Request->parse() method useless.
Cheers,
Guido
- Ngôn ngữ chính
- Perl
- Star
- 32
- Fork
- 62
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
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 libwww-perl/HTTP-Message
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
libwww-perl/HTTP-Message#228 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
libwww-perl/HTTP-Message#227 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 42/100
libwww-perl/HTTP-Message#216 ·
-
Please add a security policyĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
libwww-perl/HTTP-Message#207 · 1 bình luận ·
-
Decoding of deflate content-encoding doesn't respect max_body_sizeCó thể đã có người làm @simbabque đã nhận 539 ngày trước. Đang mở
libwww-perl/HTTP-Message#206 · 1 bình luận · 1 người được giao ·
Tất cả issue của libwww-perl/HTTP-Message
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
RotherOSS/otobo#6286 · 1 bình luận ·
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
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
LMS-Community/slimserver#1692 · 6 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix(api): API v3 Product Read ignores request language (lc) for sample products and image URLsCó thể đã có người làm @muntasir-396 đã nhận 3 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
openfoodfacts/openfoodfacts-server#15042 · 1 bình luận ·
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 75/100
Maintainer thường phản hồi trong vòng 3 ngày