Dosya URL'leri neden 3 eğik çizgiyle başlıyor?


182

HTTP iki eğik çizgiyle başlar. Örn http://example.com.

Aynısı FTP için de geçerli. Örn ftp://example.com.

Ancak, "URL" dosyası üç eğik çizgiyle başlar. Örneğin, chrome kullanarak bir pdf dosyasını okumak, URL olacaktır file:///D:/Desktop/Book.pdf.

Dosya URL'leri neden üç eğik çizgi kullanıyor?


5
Opera for Windows file://localhost/D:/Desktop/otomatik olarak genişletir .

Yanıtlar:


14

Diğerlerinin de belirttiği gibi, dosya şeması "dosya: // <host> / <path>" şeklindedir. Her ne kadar çoğu tarayıcı sadece iki eğik çizgiyle ilgili bir sorun yaşamayacak olsa da haklı olarak öyle.

Her şey eşit, üçlü eğik çizgi ve "localhost" anahtar sözcüğü yalnızca geçerli URI / URL sözdizimine uygunluğu sağlamak için bulunur. Dosya şeması bağlamında, ana bilgisayar, açık bir aktarım protokolü veya sunucu belge yolu olmadan doğrudan bir dosya sisteminden yüklendiği için anlamsızdır. HTTP olmadığı için, teoride birden fazla yerel sanal ana bilgisayarı kurduğunuz standart bir web sunucusundan yüklenemez. Tarayıcı, yalnızca "file: /// volumes / foo" gibi bir birim adı kullandığından, teknik olarak başka bir "ana bilgisayar" olan standart bir ağ biriminden yüklenemez. Son olarak, "file: //example.com/some/file" gibi şeyler denemek işe yaramaz. Harici bir ana bilgisayarı desteklemenin muhtemelen bir nedeni vardır, ancak hiçbirini düşünemiyorum.

IETF şu anda üçlü eğik çizgi gereksinimini ortadan kaldırmak için değişiklikler hazırlıyor, ancak taslak aynı zamanda file:c|/pathve hatta birkaç tuhaf olasılık da ekliyor file://///host.example.com/path.

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

“3. Bu spesifikasyon, yerel olmayan dosyalara erişim için bir mekanizma tanımlamıyor ve yasaklamıyor.”


1
Taslak, hala teklifinizi içeren 2017 yılında RFC 8089 oldu.
ComFreek

252

Komple sözdizimi file://host/path.

Eğer ana bilgisayar ise localhost, sonuç olarak çıkarılabilir file:///path.

Bkz. RFC 1738 - Tekdüzen Kaynak Konumlandırıcıları (URL) :

Bir dosya URL'si formu alır:

file://<host>/<path>

[...]

Özel bir durum olarak, <host>"localhost" veya boş string olabilir; bu, 'URL'nin yorumlandığı makine' olarak yorumlanır.


3
Güzel, bu sorunun cevabını bir RFC standardı beklemiyordum!
Pacerier

33
@Pacerier Neredeyse internet ile ilgisi olan her şey bir RFC tarafından açıklanabilir (mutlaka "standart" olmadıklarını, ancak böyle kabul edilebileceklerini unutmayın).
slhck

5
Tim Berners Lee’nin her URL’deki iki eğik çizgiden
Peter

7
Bunları localhostdiğer protokollerden de çıkarabilir miyim yoksa sadece bunun için file://mi çalışıyor ?
Agos

3
Firefox’un bu standart `file: // test / C: \` nin gerçekten aynı olmadığına dikkat edin, `file: /// C: \` ve `http: /// test` gibi bir URL verilecek hata
Earlz

27

Dennis ayırmak için gerekli 3 eğik çizgi, açıkladığı hostgelen path, ancak diğer iki çok daha ilginç ...

URL sözdizimine bir işe yaramaz ve biraz keyfi olduklarını ortaya çıktı. World Wide Web'in mucidi ve standartlarının çoğunun ( Dennis'in bağdaştırdığı RFC dahil) yazarı Tim Berners-Lee, 2009'da yapılan bir röportajda 'çifte kesikli' kullanımını kullandı.

Bay Berners-Lee, söz konusu tarihte yapılan bir programlama kongresinin gerçekte gerekli olmadığı ortaya çıktı. Bütün kağıtlara ve ağaçlara bakın, insanların yıllar boyunca kağıda bu eğik çizgileri yazmak veya yazmak zorunda kalmazlarsa kurtarılabileceğini söyledi - insan emeğinden ve bu iki tuşa basmak için harcanan zamandan söz etmeden sayısız milyonlarca tarayıcı adres kutularında

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

Bu nedenle, 18 yıl önce öngörülen küçük (ve karakteristik olmayan) bir atılım için tasarruf edin, dosya URL’niz kolayca file:/D:/Desktop/Book.pdfdeğil , kolayca olabilirdi file:///D:/Desktop/Book.pdf.

Sorunuzu yanıtlamak için, URL’lerin 3 eğik çizginin olmasının iyi bir nedeni yoktur.


Güncelleme: @ComFreek yorumlarda da belirtildiği gibi, 2017 itibariyle, file:/D:/...yukarıdaki örnek geçerli! Bu, özellikle bu düzeltmeyi önceki standartlardan alan RFC 8089 sayesinde ...

[RFC1738] 'deki tanımlamaya göre, bir dosya URL'si her zaman "file: //" belirteciyle başladı, ardından (isteğe bağlı olarak boş) bir ana bilgisayar adı ve bir "/" işareti belirdi. Bölüm 2'de verilen sözdizimi, "//" çift eğik çizgiler de dahil olmak üzere tüm yetki bileşenini isteğe bağlı yapar.

Yaşamak için ne kadar zaman.


2
TimBL aynı zamanda onun bu ayrıntılandırır.Beynin SSS
Molomby

2
2 bayt http:example.comyerine sadece kullanarak kaydedebilirsiniz bahsetmiyorum bile http://example.comçok gibi görünmüyor, ama toplarlar. Google günde milyonlarca arama alıyor . Bir sayfada kaç tane bağlantı var? En az 20. Bu, bir milyon arama için, eğer eğik çizgiler gerekli olmasaydı, 20 MB bant genişliği kurtarılmış olabilirdi.
Cole Johnson

1
@ColeJohnson - Protokol bölümünü de bırakabileceğinizi biliyor muydunuz? Öyleyse http://example.com, //example.comhttp üzerinden iletilen bir belgede olduğu gibi bağlanabilir . Buna protokol göreli URL adı verilir , tüm tarayıcılar bunları destekler.
Molomby

Bunların farkındayım, ama şahsen onları sadece CSS'de kullanıyorum. HTML yazarken protokolü de kullanıyorum. Gerçekten gerçek bir sebep yok. Belki de hariç, HTML5 + CSS3 birkaç yıl önce ilk kez “büyük” hale geldiğinde, baktıklarımın neredeyse tamamı böyle idi.
Cole Johnson,

1
Cevabınızın önerdiğinin tersine, RFC 8089file:/D:/Desktop/Book.pdf uyarınca (2017'den) geçerli bir dosya URI'sı , dosya URI yönlerinde RFC 1738'in (1994) yerini almıştır .
ComFreek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.