เหตุใด URL ไฟล์จึงเริ่มต้นด้วย 3 สแลช


182

HTTP เริ่มต้นด้วยสองสแลช http://example.comเช่น

กันไปสำหรับ FTP ftp://example.comเช่น

อย่างไรก็ตามไฟล์ "URL" เริ่มต้นด้วยสามสแลช เช่นการอ่านไฟล์ PDF โดยใช้โครเมี่ยม URL file:///D:/Desktop/Book.pdfจะเป็น

เหตุใด URL ไฟล์จึงใช้สามสแลช


5
Opera สำหรับ Windows ขยายให้เป็นfile://localhost/D:/Desktop/อัตโนมัติ

คำตอบ:


14

ดังที่คนอื่น ๆ ได้กล่าวไว้สคีมาของไฟล์นั้นอยู่ในรูปแบบ "file: // <host> / <path>" แม้ว่าเบราว์เซอร์ส่วนใหญ่จะไม่มีปัญหากับเครื่องหมายทับสองอันเท่านั้นและถูกต้อง

ทุกสิ่งเท่ากันมีสามสแลชและคำหลัก "localhost" เท่านั้นที่มีอยู่เพื่อให้สอดคล้องกับไวยากรณ์ URI / URL ที่ถูกต้อง ในบริบทของ schema ของไฟล์โฮสต์ไม่มีความหมายเนื่องจากโหลดโดยตรงจากระบบไฟล์โดยไม่มีโปรโตคอลการถ่ายโอนที่ชัดเจนหรือเส้นทางเอกสารเซิร์ฟเวอร์ เนื่องจากไม่ใช่ HTTP จึงไม่สามารถโหลดจากเว็บเซิร์ฟเวอร์มาตรฐานโดยที่คุณสามารถตั้งค่าโฮสต์เสมือนในเครื่องได้หลายตัว และไม่สามารถโหลดจากไดรฟ์ข้อมูลเครือข่ายมาตรฐานที่เป็น "โฮสต์" อีกทางเทคนิคเนื่องจากเบราว์เซอร์ใช้ชื่อโวลุ่มเช่น "ไฟล์: /// โวลุ่ม / foo" ในที่สุดการลองสิ่งต่าง ๆ เช่น "file: //example.com/some/file" ก็ใช้ไม่ได้ อาจมีเหตุผลบางอย่างที่สนับสนุนโฮสต์ภายนอก แต่ฉันไม่สามารถคิดได้

IETF ขณะนี้การจัดทำร่างการเปลี่ยนแปลงที่จะเอาความต้องการสามเฉือน แต่ร่างยังเพิ่มความเป็นไปได้น้อยเช่นลมและแม้กระทั่งfile:c|/pathfile://///host.example.com/path

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

"3. ข้อกำหนดนี้ไม่ได้กำหนดหรือห้ามกลไกสำหรับการเข้าถึงไฟล์ที่ไม่ใช่ในเครื่อง"


1
ร่างกลายเป็นRFC 8089ในปี 2560 ซึ่งยังรวมถึงใบเสนอราคาของคุณ
ComFreek

252

file://host/pathไวยากรณ์ที่สมบูรณ์

ถ้าโฮสต์คือมันสามารถละเว้นผลในlocalhostfile:///path

ดูRFC 1738 - ตัวระบุแหล่งทรัพยากร (URL) :

URL ไฟล์ใช้รูปแบบ:

file://<host>/<path>

[ ... ]

เป็นกรณีพิเศษ<host>สามารถเป็นสตริง "localhost" หรือสตริงว่าง สิ่งนี้ถูกตีความว่าเป็น 'เครื่องที่จะตีความ URL'


3
เยี่ยมฉันไม่คาดหวังคำตอบสำหรับคำถามนี้ว่าเป็นมาตรฐาน RFC!
Pacerier

33
@Pacerier RFC เกือบทุกอย่างที่เกี่ยวข้องกับอินเทอร์เน็ตสามารถอธิบายได้ (โปรดทราบว่าพวกเขาไม่จำเป็นต้องเป็น "มาตรฐาน" แต่อาจนำมาใช้เป็นอย่างนั้นได้)
slhck

5
โปรดทราบว่า Tim Berners Lee ได้ขอโทษสำหรับเครื่องหมายสแลชทั้งสองที่อยู่ในทุก URL: news.bbc.co.uk/2/hi/technology/8306631.stm
Peter

7
ฉันสามารถละเว้นlocalhostจากโปรโตคอลอื่น ๆ ด้วยหรือไม่ก็ทำงานเฉพาะสำหรับfile://?
Agos

3
โปรดทราบว่า Firefox ไม่ปฏิบัติตาม `ไฟล์: // test / C: \ 'นี้จะทำงานเหมือนกับ` ไฟล์: /// C: \' และ `http: /// ทดสอบ 'จะให้ URL ที่ไม่ถูกต้อง ข้อผิดพลาด
Earlz

27

เดนนิสอธิบายสแลชที่ 3 ซึ่งจำเป็นต้องแยกออกhostจากส่วนpathแต่อีกสองส่วนนั้นน่าสนใจกว่า ...

มันกลับกลายเป็นว่าพวกเขาไม่มีประโยชน์และค่อนข้างจะเพิ่มเข้าไปในไวยากรณ์ URL Tim Berners-Lee ผู้ประดิษฐ์เวิลด์ไวด์เว็บและผู้เขียนมาตรฐานหลายแห่ง (รวมถึงRFCที่เดนนิสเชื่อมโยงด้วย) เสียใจที่เขาใช้งาน 'double slash' ในการสัมภาษณ์เมื่อปี 2552

การเฉือนสองครั้งแม้ว่าการประชุมการเขียนโปรแกรมในเวลานั้นกลับกลายเป็นว่าไม่ได้มีความจำเป็นจริงๆ Mr. Berners-Lee อธิบาย ดูกระดาษและต้นไม้ทั้งหมดที่เขาพูดซึ่งอาจได้รับการช่วยเหลือหากผู้คนไม่ต้องเขียนหรือพิมพ์เครื่องหมายทับลงบนกระดาษในช่วงหลายปีที่ผ่านมา - ไม่ต้องพูดถึงแรงงานมนุษย์และเวลาที่ใช้ในการพิมพ์สองครั้งนับล้าน ครั้งในกล่องที่อยู่ของเบราว์เซอร์

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

ดังนั้นบันทึกสำหรับผู้เยาว์ (และวิสัย) หมดอายุในการมองการณ์ไกล 18 ปีที่ผ่านมา URL ของไฟล์ของคุณอาจเป็นเพียงแค่ได้รับได้อย่างง่ายดายมากกว่าfile:/D:/Desktop/Book.pdffile:///D:/Desktop/Book.pdf

มีเพื่อตอบคำถามของคุณไม่มีเหตุผลที่ดีว่าทำไม URL มี 3 สแลช


อัปเดต: @ComFreek ชี้ให้เห็นในความคิดเห็นในขณะที่ปี 2017 file:/D:/...ตัวอย่างข้างต้นใช้งานได้แล้ว! ขอบคุณRFC 8089ซึ่งเรียกการแก้ไขนี้โดยเฉพาะจากมาตรฐานก่อนหน้า ...

ตามคำจำกัดความใน [RFC1738] URL ไฟล์จะเริ่มต้นด้วยโทเค็น "file: //" ตามด้วยชื่อโฮสต์ (ทางเลือกว่าง) และ "/" ไวยากรณ์ที่ให้ไว้ในส่วนที่ 2 ทำให้องค์ประกอบผู้มีอำนาจทั้งหมดรวมถึงเครื่องหมายสแลชคู่ "//" หรือไม่ก็ได้

ช่างเป็นเวลาที่ยังมีชีวิตอยู่


2
TimBL ยังอธิบายเพิ่มเติมเกี่ยวกับเรื่องนี้ในคำถามที่พบบ่อย
Molomby

2
ไม่ต้องพูดถึงว่าสามารถบันทึก 2 ไบต์โดยใช้http:example.comแทนhttp://example.comอาจดูเหมือนไม่มาก แต่ก็เพิ่มขึ้น Google ได้รับการค้นหาหลายล้านครั้งต่อวัน มีลิงค์อยู่กี่หน้า อย่างน้อย 20 รายการนั่นหมายถึงการค้นหาหนึ่งล้านครั้งหากไม่จำเป็นต้องใช้เครื่องหมายทับอาจไม่สามารถบันทึกแบนด์วิดท์ 20 MB ได้
โคลจอห์นสัน

1
@ColeJohnson - คุณรู้หรือไม่ว่าคุณสามารถละทิ้งส่วนโปรโตคอลได้เช่นกัน ดังนั้นhttp://example.comอาจเชื่อมโยงกับ//example.comในเอกสารที่ส่งผ่าน http มันเรียกว่าurl ที่เกี่ยวข้องกับโปรโตคอลเบราว์เซอร์ทั้งหมดสนับสนุน
Molomby

ฉันตระหนักดีถึงสิ่งเหล่านั้น แต่ส่วนตัวแล้วฉันจะใช้พวกเขาใน CSS เท่านั้น เมื่อเขียน HTML ฉันใช้โปรโตคอลด้วย ไม่มีเหตุผลที่แท้จริงจริงๆ ยกเว้นอาจเป็นเพราะเมื่อ HTML5 + CSS3 กลายเป็น "ใหญ่" ครั้งแรกเมื่อไม่กี่ปีที่ผ่านมาเว็บไซต์เกือบทั้งหมดที่ฉันดูเป็นเช่นนั้น
โคลจอห์นสัน

1
ตรงกันข้ามกับสิ่งที่คำตอบของคุณอาจแนะนำfile:/D:/Desktop/Book.pdfคือ URI ไฟล์ที่ถูกต้องตามRFC 8089 (จาก 2017) ซึ่งแทนที่RFC 1738 (1994) ในด้านไฟล์ URI
ComFreek
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.