Mengapa URL file dimulai dengan 3 garis miring?

182

HTTP dimulai dengan dua garis miring. Misalnya http://example.com.

Hal yang sama berlaku untuk FTP. Misalnya ftp://example.com.

Namun, file "URL" mulai dengan tiga garis miring. Misalnya Membaca file pdf menggunakan chrome, URL akan menjadi file:///D:/Desktop/Book.pdf.

Mengapa URL file menggunakan tiga garis miring?

Pacerier
sumber
5
Opera untuk Windows mengembangkannya file://localhost/D:/Desktop/secara otomatis.

Jawaban:

14

Seperti yang disebutkan orang lain, skema file dalam bentuk "file: // <host> / <path>". Meskipun sebagian besar browser tidak akan memiliki masalah dengan hanya dua garis miring, dan memang seharusnya begitu.

Semua hal dianggap sama, kata kunci triple slash dan "localhost" hanya ada untuk memastikan kesesuaian dengan sintaks URI / URL yang valid. Dalam konteks skema file, host tidak berarti karena memuat langsung dari sistem file tanpa protokol transfer eksplisit atau jalur dokumen server. Karena ini bukan HTTP, ia tidak dapat memuat dari server web standar di mana secara teori Anda dapat mengatur beberapa host virtual lokal. Dan itu tidak dapat memuat dari volume jaringan standar yang secara teknis "host" lain, karena browser hanya menggunakan nama volume seperti "file: /// volume / foo". Akhirnya, mencoba hal-hal seperti "file: //example.com/some/file" tidak berfungsi. Mungkin ada beberapa alasan untuk mendukung host eksternal, tetapi saya tidak dapat memikirkannya.

IETF saat ini sedang menyusun perubahan untuk menghapus persyaratan triple-slash, meskipun konsep tersebut juga menambahkan beberapa kemungkinan eksentrik seperti file:c|/pathdan bahkan file://///host.example.com/path.

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

"3. Spesifikasi ini tidak mendefinisikan atau melarang mekanisme untuk mengakses file non-lokal."

Beejor
sumber
1
Draf telah menjadi RFC 8089 di 2017, yang masih termasuk kutipan Anda.
ComFreek
252

Sintaks lengkapnya adalah file://host/path.

Jika tuan rumah localhost, itu bisa dihilangkan, menghasilkan file:///path.

Lihat RFC 1738 - Uniform Resource Locators (URL) :

URL file berupa:

file://<host>/<path>

[...]

Sebagai kasus khusus, <host>dapat berupa string "localhost" atau string kosong; ini ditafsirkan sebagai 'mesin dari mana URL ditafsirkan'.

Dennis
sumber
3
Keren, saya tidak mengharapkan jawaban untuk pertanyaan ini standar RFC!
Pacerier
33
@ Paserier Hampir semua yang ada hubungannya dengan internet dapat dijelaskan oleh RFC (perhatikan bahwa mereka tidak harus "standar" tetapi dapat diadopsi seperti itu).
slhck
5
Perhatikan bahwa Tim Berners Lee telah meminta maaf atas 2 tebasan yang ada di setiap URL: news.bbc.co.uk/2/hi/technology/8306631.stm
Peter
7
Bisakah saya menghilangkannya localhostdari protokol lain juga atau hanya berfungsi untuk file://?
Agos
3
Perhatikan bahwa Firefox tidak benar-benar mengikuti standar ini `file: // test / C: \` akan berperilaku sama dengan `file: /// C: \` dan `http: /// test` akan memberikan URL yang tidak valid kesalahan
Earlz
27

Dennis telah menjelaskan tebasan ke-3, diperlukan untuk memisahkan hostdari path, tetapi dua lainnya jauh lebih menarik ...

Ternyata itu adalah tambahan yang tidak berguna dan agak sembarang untuk sintaks URL. Tim Berners-Lee, penemu World Wide Web dan penulis banyak standarnya (termasuk RFC yang dikaitkan dengan Dennis), menyesalkan penggunaan 'double slash' dalam sebuah wawancara pada tahun 2009.

Double slash, meskipun konvensi pemrograman pada saat itu, ternyata tidak terlalu diperlukan, Mr. Berners-Lee menjelaskan. Lihatlah semua kertas dan pohon, katanya, yang bisa diselamatkan jika orang tidak harus menulis atau mengetikkan garis miring di atas kertas selama bertahun-tahun - belum lagi tenaga manusia dan waktu yang dihabiskan untuk mengetik kedua penekanan tombol yang tak terhitung jutaan dalam kotak alamat browser.

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

Jadi, simpan untuk kesalahan kecil (dan tidak biasa) dalam tinjauan ke masa depan sekitar 18 tahun yang lalu, URL file Anda bisa saja dengan mudah file:/D:/Desktop/Book.pdf, daripada file:///D:/Desktop/Book.pdf.

Ada, untuk menjawab pertanyaan Anda, tidak ada alasan bagus mengapa URL memiliki 3 garis miring.


Pembaruan: Seperti yang ditunjukkan @ComFreek dalam komentar, pada 2017, file:/D:/...contoh di atas sekarang valid! Ini berkat RFC 8089 , yang secara khusus menyebut perbaikan ini dari standar sebelumnya ...

Menurut definisi dalam [RFC1738], URL file selalu dimulai dengan token "file: //", diikuti oleh nama host (opsional kosong) dan "/". Sintaks yang diberikan di Bagian 2 membuat seluruh komponen otoritas, termasuk garis miring ganda "//", opsional.

Waktu yang tepat untuk hidup.

Molombi
sumber
2
TimBL juga menguraikan hal ini dalam FAQ-
Molomby
2
Belum lagi bahwa 2 byte dapat disimpan dengan hanya menggunakan, http:example.combukan. http://example.comItu mungkin tidak tampak seperti banyak, tetapi mereka bertambah. Google menerima jutaan pencarian sehari. Berapa banyak tautan di satu halaman? Setidaknya 20. Itu artinya untuk sejuta pencarian, jika garis miring tidak diperlukan, bandwidth 20 MB bisa dihemat.
Cole Johnson
1
@ColeJohnson - Tahukah Anda bahwa Anda dapat meninggalkan bagian protokol juga? Jadi http://example.combisa ditautkan seperti //example.compada dokumen yang dikirim melalui http. Ini disebut url protokol relatif , semua browser mendukungnya.
Molomby
Saya sangat menyadari hal itu, tetapi saya pribadi hanya menggunakannya dalam CSS. Saat menulis HTML, saya menggunakan protokol juga. Tidak ada alasan sebenarnya. Kecuali mungkin karena ketika HTML5 + CSS3 pertama kali menjadi "besar" beberapa tahun yang lalu, hampir semua situs yang saya lihat adalah seperti itu.
Cole Johnson
1
Bertentangan dengan apa jawaban Anda mungkin menyarankan, file:/D:/Desktop/Book.pdffile URI yang valid sesuai RFC 8089 (dari 2017), yang menggantikan RFC 1738 (1994) dalam aspek file URI.
ComFreek