HTTP เริ่มต้นด้วยสองสแลช http://example.com
เช่น
กันไปสำหรับ FTP ftp://example.com
เช่น
อย่างไรก็ตามไฟล์ "URL" เริ่มต้นด้วยสามสแลช เช่นการอ่านไฟล์ PDF โดยใช้โครเมี่ยม URL file:///D:/Desktop/Book.pdf
จะเป็น
เหตุใด URL ไฟล์จึงใช้สามสแลช
HTTP เริ่มต้นด้วยสองสแลช http://example.com
เช่น
กันไปสำหรับ FTP ftp://example.com
เช่น
อย่างไรก็ตามไฟล์ "URL" เริ่มต้นด้วยสามสแลช เช่นการอ่านไฟล์ PDF โดยใช้โครเมี่ยม URL file:///D:/Desktop/Book.pdf
จะเป็น
เหตุใด URL ไฟล์จึงใช้สามสแลช
คำตอบ:
ดังที่คนอื่น ๆ ได้กล่าวไว้สคีมาของไฟล์นั้นอยู่ในรูปแบบ "file: // <host> / <path>" แม้ว่าเบราว์เซอร์ส่วนใหญ่จะไม่มีปัญหากับเครื่องหมายทับสองอันเท่านั้นและถูกต้อง
ทุกสิ่งเท่ากันมีสามสแลชและคำหลัก "localhost" เท่านั้นที่มีอยู่เพื่อให้สอดคล้องกับไวยากรณ์ URI / URL ที่ถูกต้อง ในบริบทของ schema ของไฟล์โฮสต์ไม่มีความหมายเนื่องจากโหลดโดยตรงจากระบบไฟล์โดยไม่มีโปรโตคอลการถ่ายโอนที่ชัดเจนหรือเส้นทางเอกสารเซิร์ฟเวอร์ เนื่องจากไม่ใช่ HTTP จึงไม่สามารถโหลดจากเว็บเซิร์ฟเวอร์มาตรฐานโดยที่คุณสามารถตั้งค่าโฮสต์เสมือนในเครื่องได้หลายตัว และไม่สามารถโหลดจากไดรฟ์ข้อมูลเครือข่ายมาตรฐานที่เป็น "โฮสต์" อีกทางเทคนิคเนื่องจากเบราว์เซอร์ใช้ชื่อโวลุ่มเช่น "ไฟล์: /// โวลุ่ม / foo" ในที่สุดการลองสิ่งต่าง ๆ เช่น "file: //example.com/some/file" ก็ใช้ไม่ได้ อาจมีเหตุผลบางอย่างที่สนับสนุนโฮสต์ภายนอก แต่ฉันไม่สามารถคิดได้
IETF ขณะนี้การจัดทำร่างการเปลี่ยนแปลงที่จะเอาความต้องการสามเฉือน แต่ร่างยังเพิ่มความเป็นไปได้น้อยเช่นลมและแม้กระทั่งfile:c|/path
file://///host.example.com/path
https://tools.ietf.org/html/draft-ietf-appsawg-file-scheme-03
"3. ข้อกำหนดนี้ไม่ได้กำหนดหรือห้ามกลไกสำหรับการเข้าถึงไฟล์ที่ไม่ใช่ในเครื่อง"
file://host/path
ไวยากรณ์ที่สมบูรณ์
ถ้าโฮสต์คือมันสามารถละเว้นผลในlocalhost
file:///path
ดูRFC 1738 - ตัวระบุแหล่งทรัพยากร (URL) :
URL ไฟล์ใช้รูปแบบ:
file://<host>/<path>
[ ... ]
เป็นกรณีพิเศษ
<host>
สามารถเป็นสตริง "localhost" หรือสตริงว่าง สิ่งนี้ถูกตีความว่าเป็น 'เครื่องที่จะตีความ URL'
localhost
จากโปรโตคอลอื่น ๆ ด้วยหรือไม่ก็ทำงานเฉพาะสำหรับfile://
?
เดนนิสอธิบายสแลชที่ 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.pdf
file:///D:/Desktop/Book.pdf
มีเพื่อตอบคำถามของคุณไม่มีเหตุผลที่ดีว่าทำไม URL มี 3 สแลช
อัปเดต: @ComFreek ชี้ให้เห็นในความคิดเห็นในขณะที่ปี 2017 file:/D:/...
ตัวอย่างข้างต้นใช้งานได้แล้ว! ขอบคุณRFC 8089ซึ่งเรียกการแก้ไขนี้โดยเฉพาะจากมาตรฐานก่อนหน้า ...
ตามคำจำกัดความใน [RFC1738] URL ไฟล์จะเริ่มต้นด้วยโทเค็น "file: //" ตามด้วยชื่อโฮสต์ (ทางเลือกว่าง) และ "/" ไวยากรณ์ที่ให้ไว้ในส่วนที่ 2 ทำให้องค์ประกอบผู้มีอำนาจทั้งหมดรวมถึงเครื่องหมายสแลชคู่ "//" หรือไม่ก็ได้
ช่างเป็นเวลาที่ยังมีชีวิตอยู่
http:example.com
แทนhttp://example.com
อาจดูเหมือนไม่มาก แต่ก็เพิ่มขึ้น Google ได้รับการค้นหาหลายล้านครั้งต่อวัน มีลิงค์อยู่กี่หน้า อย่างน้อย 20 รายการนั่นหมายถึงการค้นหาหนึ่งล้านครั้งหากไม่จำเป็นต้องใช้เครื่องหมายทับอาจไม่สามารถบันทึกแบนด์วิดท์ 20 MB ได้
http://example.com
อาจเชื่อมโยงกับ//example.com
ในเอกสารที่ส่งผ่าน http มันเรียกว่าurl ที่เกี่ยวข้องกับโปรโตคอลเบราว์เซอร์ทั้งหมดสนับสนุน
file://localhost/D:/Desktop/
อัตโนมัติ