Câu hỏi Tại sao các URL của tệp bắt đầu bằng 3 dấu gạch chéo?


HTTP bắt đầu bằng hai dấu gạch chéo. Ví dụ. http://example.com.

Tương tự với FTP. Ví dụ. ftp://example.com.

Tuy nhiên, tệp "URL" bắt đầu bằng ba dấu gạch chéo. Ví dụ. Đọc tệp pdf bằng chrome, URL sẽ là file:///D:/Desktop/Book.pdf.

Tại sao URL tệp sử dụng ba dấu gạch chéo là gì?


172
2017-10-30 14:25


gốc


Opera cho Windows mở rộng nó đến file://localhost/D:/Desktop/ tự động.
Cũng thấy stackoverflow.com/q/22772897/632951 - Pacerier


Các câu trả lời:


Như những người khác đã đề cập, lược đồ tệp có dạng "tệp: // <host> / <path>". Mặc dù hầu hết các trình duyệt sẽ không gặp sự cố chỉ với hai dấu gạch chéo và đúng như vậy.

Tất cả mọi thứ đều bằng nhau, dấu gạch chéo ba và từ khóa "localhost" chỉ tồn tại để đảm bảo sự phù hợp với cú pháp URI / URL hợp lệ. Trong bối cảnh của lược đồ tệp, máy chủ là vô nghĩa vì nó tải trực tiếp từ một hệ thống tệp mà không có bất kỳ giao thức chuyển giao rõ ràng hoặc đường dẫn tài liệu máy chủ nào. Bởi vì nó không phải là HTTP, nó không thể tải từ một máy chủ web tiêu chuẩn mà trong lý thuyết bạn có thể có nhiều máy chủ ảo cục bộ được thiết lập. Và nó không thể tải từ một khối lượng mạng tiêu chuẩn về mặt kỹ thuật một "máy chủ" khác, vì trình duyệt chỉ sử dụng tên khối lượng như "file: /// volumes / foo". Cuối cùng, việc thử những thứ như "file: //example.com/some/file" không hoạt động. Có lẽ một số lý do để hỗ trợ một máy chủ bên ngoài, nhưng tôi không thể nghĩ ra được.

IETF hiện đang soạn thảo các thay đổi để loại bỏ yêu cầu ba dấu gạch chéo, mặc dù bản nháp cũng bổ sung thêm một số khả năng kỳ quặc như file:c|/path và ngay cả file://///host.example.com/path.

https://tools.ietf.org/html/draft-ietf-appsawg-file-scheme-03

"3. Đặc tả này không định nghĩa và cũng không cấm một cơ chế truy cập các tệp không phải cục bộ."


8
2017-09-11 22:18





Cú pháp hoàn chỉnh là file://host/path.

Nếu máy chủ lưu trữ là localhost, nó có thể được bỏ qua, dẫn đến file:///path.

Xem RFC 1738 - Trình định vị tài nguyên đồng nhất (URL):

URL tệp có dạng:

file://<host>/<path>

[…]

Như một trường hợp đặc biệt, <host> có thể là chuỗi "localhost" hoặc trống      chuỗi; điều này được hiểu là 'máy mà từ đó URL      đang được giải thích '.


244
2017-10-30 14:34



Thật tuyệt, tôi không ngờ câu trả lời cho câu hỏi này là tiêu chuẩn RFC! - Pacerier
@Pacerier Almost bất cứ điều gì mà phải làm với internet có thể được giải thích bởi một RFC (lưu ý rằng họ không nhất thiết phải "tiêu chuẩn" nhưng có thể được thông qua như vậy). - slhck
Lưu ý rằng Tim Berners Lee đã xin lỗi vì 2 dấu gạch chéo đó có trong mọi URL: news.bbc.co.uk/2/hi/technology/8306631.stm - Peter
Tôi có thể bỏ qua localhost từ các giao thức khác quá hoặc nó chỉ hoạt động cho file://? - Agos
Lưu ý rằng Firefox không thực sự làm theo tiêu chuẩn này `file: // test / C: \` sẽ hoạt động giống như `file: /// C: \` và `http: /// test` sẽ cung cấp một URL không hợp lệ lỗi - Earlz


Dennis đã giải thích dấu gạch chéo thứ 3, cần thiết để tách host từ pathnhưng hai thứ còn lại thú vị hơn nhiều ...

Hóa ra chúng là một sự bổ sung vô dụng và có phần tùy tiện vào cú pháp URL. Tim Berners-Lee, nhà phát minh của World Wide Web và là tác giả của nhiều tiêu chuẩn của nó (bao gồm RFC mà Dennis đã liên kết), than thở việc sử dụng 'dấu gạch chéo kép' trong một cuộc phỏng vấn vào năm 2009.

Việc cắt giảm đôi, mặc dù một quy ước lập trình vào thời điểm đó, hóa ra là không thực sự cần thiết, ông Berners-Lee giải thích. Nhìn vào tất cả các tờ giấy và cây cối, ông nói, có thể đã được cứu nếu người ta không phải viết hoặc loại bỏ những dấu gạch chéo trên giấy trong những năm qua - chưa kể đến lao động của con người và thời gian gõ hai phím đó lần trong hộp địa chỉ trình duyệt.

http://bits.blogs.nytimes.com/2009/10/12/the-webs-inventor-regrets-one-small-thing/

Vì vậy, tiết kiệm cho một nhỏ (và uncharacteristic) mất hiệu lực trong tầm nhìn xa cách đây 18 năm, URL tập tin của bạn chỉ có thể dễ dàng được file:/D:/Desktop/Book.pdf, thay vì file:///D:/Desktop/Book.pdf.

Có, để trả lời câu hỏi của bạn, không có lý do chính đáng tại sao URL có 3 dấu gạch chéo.


25
2017-09-25 07:11



TimBL cũng nói về điều này trong Câu hỏi thường gặp - Molomby
Chưa kể 2 byte có thể được lưu bằng cách sử dụng http:example.com thay vì http://example.com Nó có thể không có vẻ như rất nhiều, nhưng họ thêm lên. Google nhận được hàng triệu tìm kiếm một ngày. Có bao nhiêu liên kết trên một trang? Ít nhất 20. Điều đó có nghĩa là đối với một triệu lượt tìm kiếm, nếu các dấu gạch chéo không cần thiết, có thể lưu 20 MB băng thông. - Cole Johnson
@ColeJohnson - Bạn có biết bạn có thể bỏ qua phần giao thức không? Vì thế http://example.com có thể được liên kết với //example.com trong một tài liệu được truyền qua http. Nó được gọi là url tương đối giao thức, tất cả các trình duyệt đều hỗ trợ chúng. - Molomby
Tôi cũng nhận thức được những điều đó, nhưng cá nhân tôi chỉ sử dụng chúng trong CSS. Khi viết HTML, tôi cũng sử dụng giao thức này. Không có lý do thực sự thực sự. Ngoại trừ có lẽ bởi vì khi HTML5 + CSS3 đầu tiên trở thành "lớn" một vài năm trước đây, hầu như tất cả các trang web tôi đã xem là như thế. - Cole Johnson
@Molomby, Ông đang nói về tất cả các byte lãng phí khi mọi người không làm url giao thức tương đối. Giống như> 99% dân số. - Pacerier