xem xét việc kê khai của các quan path-absolute
non-terminal trong "RFC3986: Uniform Resource Identifier (URI): Generic Syntax" (quy định, như là điển hình, trong ABNF cú pháp):
path-absolute = "/" [ segment-nz *("/" segment) ]
Sau đó xem xét việc kê khai segment
một vài dòng tiếp tục xuống trong cùng một tài liệu:
segment = *pchar
Nếu bạn có thể đọc ABNF, dấu hoa thị (*
) chỉ định rằng phần tử sau pchar
có thể được lặp lại m tối đa lần để tạo thành một số segment
, bao gồm số không. Học này và đọc lại tờ khai path-absolute
ở trên, bạn có thể thấy rằng một khả năng trống segment
imples rằng thứ hai "/"
có thể lặp lại vô thời hạn, do đó cho phép kết hợp hợp lệ như //////
(chiều dài tùy ý của ít nhất một /
) như một phần của path-absolute
(mà chính nó được sử dụng trong việc xác định quy tắc mô tả một URI).
Vì tất cả các URL đều là URI, chúng tôi có thể kết luận rằng có, URL được cho phép nhiều dấu gạch chéo tiến tiếp theo, mỗi RFC được trích dẫn.
Nhưng không giống như mọi người theo dõi hoặc triển khai phân tích cú pháp URI theo đặc tả, vì vậy tôi khá chắc chắn rằng các trình phân tích cú pháp URI/URL không tuân thủ và tất cả các loại phần mềm xếp chồng lên nhau.
Bạn phải xem phần 3.3 của tài liệu bạn đã trích dẫn (hoặc RFC3986 đã lỗi thời, nhưng đồng ý với hành vi được thảo luận ở đây), được chỉ định thông qua ABNF cách 'path_segments' bao gồm ít nhất một đoạn mã' segment' có thể có độ dài trống. Điều này có nghĩa là các chuỗi ký tự như '//' hoàn toàn hợp lệ trong URI. – amn
@amn Nó hợp lệ, không có vấn đề ở đây. Nhưng câu hỏi là liệu nó có thể phá vỡ bất cứ điều gì. Và nó có thể - nếu bạn sử dụng viết lại URL (ví dụ) – poncha
Đây là một câu trả lời tuyệt vời! Rất tiếc, đó là bản sao của https: ///stackoverflow.com////////a/////10161264/////6618577 mặc dù ... –