Tôi biết bạn đã luôn nghĩ về những thử thách và khổ nạn khi trải nghiệm những niềm vui trong cuộc sống như một proxy web. Thành thật mà nói, ai không? Hôm nay bạn được giao nhiệm vụ hiện thực hóa mục tiêu này (ít nhất là một phần của nó). Trang web X nhận được rất nhiều lưu lượng truy cập hàng ngày và đang tìm kiếm PaaS (rõ ràng điều này đề cập đến Proxy là một Dịch vụ) vì số lượng lớn người dùng khăng khăng truyền thông tin nhạy cảm thông qua các tham số truy vấn (người dùng thật ngớ ngẩn). Nhiệm vụ của bạn là xóa bất kỳ và tất cả các tham số truy vấn nhạy cảm khỏi yêu cầu trước khi chuyển tiếp yêu cầu đến đích ban đầu.
Đầu vào
- URL HTTP tuyệt đối được hình thành tốt tuân theo ngữ pháp URI trong RFC3986 Phần 3 .
- Bạn có thể cho rằng không có mảnh vỡ
- Ví dụ định dạng ngắn gọn trong đó mọi thứ trong ngoặc vuông biểu thị tùy chọn:
http[s]://[user:pass@]host.name.com[:port]/[?param1=value1¶m2=value2...]
- Một danh sách các tham số truy vấn sẽ được loại bỏ.
Đầu ra
URL HTTP được sửa đổi mà không có các tham số được xác định trong danh sách đầu vào.
Ví dụ
http://example.com/ [foo]
> http://example.com/
http://example.com/?foo=bar []
> http://example.com/?foo=bar
http://example.com/ []
> http://example.com/
http://example.com/?foo=1&bar=2&baz=3 [foo,baz]
> http://example.com/?bar=2
http://example.com/?foo=1&bar=2&baz=3 [foo,bar,baz]
> http://example.com/
http://example.com/?foo&bar=2&baz= [foo,baz]
> http://example.com/?bar=2
http://example.com/?abc=1&def=2&baz=foo [foo,bar]
> http://example.com/?abc=1&def=2&baz=foo
http://example.com/?foobar=baz [foo]
> http://example.com/?foobar=baz
http://foo:foo@foo.com:8080/?foo=1&bar=foo [foo]
> http://foo:foo@foo.com:8080/?bar=foo
Chấm điểm
Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
&xuất hiện bất cứ nơi nào khác ngoài giữa các tham số?
?? Cũng nên giữ trật tự như vậy?
&là một phần của tham số truy vấn, nó phải được mã hóa chính xác như là%26
http://foo:&foo=x@foo.com:8080/?foo=1&bar=foođược cho phép bởi RFC. Điều này sẽ phá vỡ một loạt các giải pháp hiện có. : D (Quy tắc là userinfo có thể được mở rộng dưới dạng không được giám sát hoặc thoát khỏi pct hoặc các lần xóa phụ, và các lần &=