ส่วนประกอบของ URL มีอะไรบ้าง

ส่วนใหญ่แล้ว คุณพูดว่า "ฉันซื้อโดเมน" หรือ "รูปภาพของเราโฮสต์อยู่ในเว็บไซต์อื่น" ได้ แม้ว่าจะไม่ใช่ความจริงทั้งหมด อย่างไรก็ตาม ในบริบทบางอย่างก็จำเป็นต้องมีความแม่นยำมากขึ้น ตัวอย่างเช่น เมื่อจัดการกับคุกกี้ คุณต้องเข้าใจความแตกต่างระหว่างเว็บไซต์กับต้นทาง

ชื่อของส่วนต่างๆ ของ URL จะระบุไว้ในมาตรฐาน ซึ่งจะกำหนด JavaScript API ด้วย

  • มาตรฐาน URL จะกำหนด URL และแนวคิดที่เกี่ยวข้องเพื่อให้วิศวกรสร้างเว็บเบราว์เซอร์ที่ทำงานร่วมกันได้
  • คอมโพเนนต์ URL API ของมาตรฐานจะกำหนดวิธีการให้สิทธิ์เข้าถึงบางส่วนของสตริง URL เช่น รูปแบบหรือต้นทาง

เอกสารนี้อธิบายคําศัพท์ต่างๆ ที่ใช้ในการสตริง URL ของ HTTP หรือ HTTPS และไม่ครอบคลุม URL ประเภทอื่นๆ เช่น URL ของไฟล์หรือข้อมูล สำหรับคําศัพท์อย่าง host และ origin คําจํากัดความที่ถูกต้องนั้นมีความซับซ้อนโดยเนื้อแท้ เอกสารนี้จึงแสดงตัวอย่างและลิงก์ไปยังมาตรฐาน URL แทนที่จะพยายามอธิบายอย่างละเอียด

คุณสามารถใช้ JavaScript เพื่อรับชื่อของคอมโพเนนต์ URL ที่ URL API กําหนด เช่น

let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);

เครื่องมือวิเคราะห์ URL

แก้ไข URL ด้านล่างเพื่อดูวิธีตั้งชื่อบางส่วนของสตริง URL หรือจะเปิดในแท็บแยกต่างหากที่ url-parts.glitch.me ก็ได้


ชื่อของส่วนต่างๆ ของ URL มีดังนี้

โดเมนระดับบนสุดตามรหัสประเทศ (ccTLD)

โดเมนระดับบนสุดที่ระบุไว้ในรายการรหัสประเทศ ISO 3166-1

  • สำหรับ https://example.org.au ccTLD คือ au
  • สำหรับ https://example.io ccTLD คือ io

ชื่อโดเมน

ส่วนต่างๆ ของ HTTP หรือ HTTPS URL ที่แยกกันด้วยจุด ได้แก่ ทุกอย่างหลังสคีม แต่อยู่ก่อนเส้นทางหรือพอร์ต (หากระบุ) ส่วนต่างๆ ของชื่อโดเมนเรียกว่าป้ายกำกับ

URL ชื่อโดเมน
https://example.github.io/path example.github.io
https://support.example.org.au:443 support.example.org.au

โดเมนระดับบนสุดที่มีประสิทธิภาพ (eTLD)

รายการในรายการคำต่อท้ายสาธารณะ ซึ่งรวมถึง TLD และ(สำหรับ eTLD ที่มีหลายส่วน) โดเมนเพิ่มเติมที่อยู่ด้านล่าง ได้แก่ โดเมนระดับ 2, ระดับ 3 และอื่นๆ

  • เช่น com, com.au, github.io, sa.edu.au, schools.nsw.edu.au

"ส่วนต่อท้ายแบบสาธารณะ" เช่น ตัวอย่างเหล่านี้ คือชื่อที่โดเมนสามารถจดทะเบียนได้ รายการคำต่อท้ายสาธารณะคือรายการคำต่อท้ายสาธารณะทั้งหมดที่รู้จัก และได้รับการอัปเดตเป็นประจำ เบราว์เซอร์ต่างๆ รวมถึง Chromium และ Firefox ใช้รายการนี้ในบิลด์

eTLD+1

โปรดดูโดเมนที่จดทะเบียนได้

eTLD พร้อมโดเมนย่อยที่อยู่ก่อนหน้า

  • เช่น example.com, example.org.au, example.github.io, example.sa.edu.au, example.schools.nsw.edu.au

ชื่อไฟล์

ไม่ได้กำหนดไว้ในมาตรฐาน URL และไม่ได้เป็นส่วนหนึ่งของ URL API แต่มักใช้เพื่ออ้างอิงถึง URL ส่วนที่ไม่ใช่เส้นทางส่วนสุดท้ายโดยอิงตามสมมติฐาน (ซึ่งมักไม่ถูกต้อง) ที่ว่า URL จับคู่กับโครงสร้างไดเรกทอรีโดยตรง

เช่น https://example.com/dir/file.html อาจใช้เรียก file.html ว่าชื่อไฟล์

นอกจากนี้ เบราว์เซอร์ยังใช้ค่าชื่อไฟล์เพื่อตั้งชื่อชิ้นงานหากมีการดาวน์โหลด ตัวอย่างเช่น https://example.com/images/image.jpg มักจะบันทึกไว้ในพื้นที่เป็น image.jpg

ส่วนย่อย

สตริงที่อยู่หลังอักขระ # ที่ส่วนท้ายของ URL ซึ่งระบุตัวระบุส่วนย่อย

  • เช่น URL https://example.com/cats#tabby มีค่าตัวระบุของส่วนย่อยเป็น tabby

ส่วนที่มี # เรียกว่า แฮช หรือแอตทริบิวต์ นอกจากนี้ คุณยังลิงก์และไฮไลต์ข้อความที่ตัดตอนมาได้ด้วย

URL API จะแสดงผลแฮชแทนที่จะเป็นข้อมูลโค้ด

ชื่อโดเมนแบบสมบูรณ์ในตัวเอง (FQDN)

ที่อยู่แบบสมบูรณ์ของเว็บไซต์หรือเซิร์ฟเวอร์ที่แมปกับที่อยู่ IP

URL FQDN
https://example.com:1234/cats example.com
https://api.example.github.io api.example.github.io

FQDN สำหรับ URL จะไม่รวมพอร์ต แม้ว่าจะใช้พอร์ตที่ไม่ใช่ค่าเริ่มต้นก็ตาม

แฮช (หรือ Anchor)

สตริงที่อยู่หลังอักขระ # ที่ส่วนท้ายของ URL ซึ่งระบุตัวระบุส่วนย่อย (ในบริบทบางบริบท สิ่งนี้เรียกว่า "แอตทริบิวต์")

ส่วนที่ไม่รวม # เรียกว่าข้อมูลโค้ด นอกจากนี้ คุณยังลิงก์และไฮไลต์ข้อความที่ตัดตอนมาได้ด้วย

URL API จะแสดงผลแฮชแทนที่จะเป็นข้อมูลโค้ด

โฮสต์

ตามที่กำหนดไว้ในมาตรฐาน URL โฮสต์อาจเป็นชื่อโดเมน ที่อยู่ IP v4 ที่อยู่ IPv6 โฮสต์แบบทึบ หรือโฮสต์ว่าง

  • คําจํากัดความของ host ในมาตรฐาน URL จะไม่รวมพอร์ต
  • URL.host รวมพอร์ต เว้นแต่พอร์ตจะเป็นพอร์ตเริ่มต้นสำหรับรูปแบบ
  • URL.hostname ไม่รวมพอร์ต
URL URL.host
https://www.example.com:443/cat www.example.com
// 443 is the default port for the scheme
https://www.example.com:1234/cat www.example.com:1234
https://cat.example.github.io cat.example.github.io

ชื่อโฮสต์

ชื่อโฮสต์จะกำหนดโดย JavaScript URL API แต่ไม่ได้กำหนดโดยมาตรฐาน URL ดูรายละเอียดเพิ่มเติมได้ที่การแสดงโฮสต์

URL.hostname จะแสดงผลโฮสต์โดยไม่มีพอร์ต

URL URL.hostname
https://www.example.com:443/cat www.example.com
https://www.example.com:1234/cat www.example.com
https://cat.example.github.io cat.example.github.io

Origin

มาตรฐาน URL กำหนด origin และลิงก์ไปยังมาตรฐาน HTML สำหรับพื้นหลัง

สําหรับ URL ของ HTTP หรือ HTTPS นั้น URL.origin จะแสดงรูปแบบ โฮสต์ และพอร์ต (เว้นแต่พอร์ตจะเป็นค่าเริ่มต้นสําหรับรูปแบบนั้น)

URL URL.origin
https://www.example.com:443/cat https://www.example.com
https://www.example.com:1234/cat https://www.example.com:1234
https://cat.example.github.io https://cat.example.github.io

พารามิเตอร์

ดูพารามิเตอร์การค้นหา

รหัสผ่าน

ดูชื่อผู้ใช้

ชื่อเส้นทาง

สำหรับ URL ของ HTTP หรือ HTTPS จะเป็นส่วนที่อยู่หลังโดเมนและพอร์ต (หากมี) ซึ่งรวมถึงfilename (หากมี) แต่ไม่รวมสตริงการค้นหาหรือ แฮช

URL URL.pathname
https://example.com [empty string]
https://example.com:8000/search?q=tabby /search
https://example.github.io/cat/pattern#tabby /cat/pattern
https://example.github.io/README.md /README.md

บางครั้ง "เส้นทาง" ใช้เพื่ออ้างอิงเส้นทางที่ไม่มีชื่อไฟล์ เช่น "path" ของ URL https://example.com/cat/pattern/tabby.html คือ /cat/pattern

พอร์ต

ตัวเลขหลัง : ใน URL ที่ระบุพอร์ตเครือข่าย เช่น หมายเลขพอร์ตของ URL https://example.com:1234/tabby คือ 1234

หมายเลขพอร์ตต้องเป็นจำนวนเต็มแบบไม่ลงนาม 16 บิต กล่าวคือ จำนวนเต็มตั้งแต่ 0 ถึง 65535

สำหรับ URL ของ HTTP พอร์ตเริ่มต้นคือ 80 ส่วน HTTPS จะเป็น 443 URL ไม่จำเป็นต้องระบุหมายเลขพอร์ต เว้นแต่จะใช้พอร์ตที่ไม่ใช่พอร์ตเริ่มต้น

API จะแสดงผลสตริงว่างหากพอร์ตเป็นค่าเริ่มต้นสำหรับรูปแบบ

URL URL.port
https://example.com // empty string
https://example.com:443/foo // empty string: port is default for scheme
https://www.example.com:1234/foo 1234

โปรโตคอล

สคีมาตามด้วย : (เช่น http: หรือ https:)

protocol มีให้บริการจาก URL API แต่ scheme ไม่มี

คําค้นหา (หรือ "สตริงการค้นหา")

ส่วน search ของ URL โดยไม่รวม ? ที่อยู่ด้านหน้า

โดเมนที่จดทะเบียนได้

  • สำหรับ URL ที่มี eTLD แบบ 1 ส่วน เช่น com หรือ org (นั่นคือ eTLD ที่สอดคล้องกับ TLD) โดเมนและโดเมนระดับ 2 ที่อยู่ก่อนหน้า เช่น example.com หรือ example.org
  • สำหรับ URL ที่มี eTLD แบบ 2 ส่วนซึ่งอนุญาตให้จดทะเบียนได้เฉพาะระดับที่ 3 (เช่น รายการในรายการคำต่อท้ายสาธารณะ เช่น com.au และ github.io) ให้ใส่โดเมนระดับบนสุดแบบ 2 ส่วน ("คำต่อท้ายสาธารณะ") และชื่อโดเมนระดับที่ 3 ไว้ก่อนหน้า เช่น example.org.au หรือ example.github.io
  • สำหรับ eTLD ที่มี 3 ส่วนขึ้นไป ให้ใช้ eTLD และโดเมนก่อนหน้า

แบบแผน

ส่วนหนึ่งของ URL (ก่อน ://) ที่กำหนดโปรโตคอลเครือข่าย (หรือการดำเนินการที่ User Agent จะทำ) เมื่อมีการขอ URL ตัวอย่างเช่น คำขอไปยัง URL ที่มีรูปแบบ https ควรทำโดยใช้โปรโตคอล HTTPS สําหรับคําขอไปยัง URL ที่มีรูปแบบ เช่น file, mailto หรือ git ที่ไม่สอดคล้องกับโปรโตคอลเครือข่าย ลักษณะการทํางานจะขึ้นอยู่กับ User Agent เช่น เมื่อผู้ใช้คลิกลิงก์ mailto เบราว์เซอร์ส่วนใหญ่จะเปิดแอปพลิเคชันอีเมลเริ่มต้นโดยใช้ค่าใน URL href ของลิงก์

เครื่องหมายคําถามตามด้วยชุดคู่คีย์-ค่าที่แสดงถึงพารามิเตอร์และค่าของพารามิเตอร์ ซึ่งระบุไว้หลังpathname

URL URL.search
https://example.com/cats?pattern=tabby&mood=bonkers ?pattern=tabby&mood=bonkers
https://example.com/cats:443?pattern=tabby ?pattern=tabby

query หรือ "สตริงการค้นหา" หมายถึง search ที่ไม่มี ? นําหน้า

โปรดดูพารามิเตอร์การค้นหาด้วย

พารามิเตอร์การค้นหา

อ้างอิงถึงรายการข้อมูลที่ส่งในสตริงการค้นหา (หรือ "สตริงการค้นหา")

  • เช่น สําหรับ https://example.com/cats?pattern=tabby&mood=bonkers สตริงการค้นหามีพารามิเตอร์ 2 รายการ ได้แก่ pattern=tabby และ mood=bonkers

โดเมนระดับที่ 2

โดเมนที่อยู่ก่อนโดเมนระดับบนสุด

  • สำหรับ URL https://www.example.com โดเมนระดับที่ 2 คือ example.com ซึ่งเป็นโดเมนย่อยของโดเมนระดับบนสุด com

  • สำหรับ https://example.org.au โดเมนระดับบนสุดคือ au, โดเมนระดับที่ 2 คือ org และโดเมนระดับที่ 3 คือ example ในตัวอย่างนี้ org.au เป็นโดเมนย่อยของ au และ example.org.au เป็นโดเมนย่อยของ org.au

ไซต์

เว็บไซต์จะกำหนดโดยมาตรฐาน HTML รวมถึงเว็บไซต์เดียวกัน ซึ่งมีรูปแบบ และเว็บไซต์เดียวกันที่ไม่มีรูปแบบ

ไม่ได้กำหนดเว็บไซต์ไว้ในมาตรฐาน URL หรือ JavaScript URL API

บริบทนี้

  • สําหรับ HTTP หรือ HTTPS URL ที่มี eTLD เพียงส่วนเดียว เช่น https://example.com เว็บไซต์จะประกอบด้วย scheme, eTLD และป้ายกํากับก่อนหน้า ตัวอย่างเช่น สำหรับ URL https://www.example.com/cat เว็บไซต์คือ https://example.com (สำหรับ URL นี้ eTLD จะเหมือนกับโดเมนระดับบนสุด)
  • สําหรับ eTLD แบบหลายส่วน เช่น co.uk, github.io หรือ sa.edu.au "เว็บไซต์" จะประกอบด้วย scheme, eTLD และป้ายกำกับก่อนหน้า ตัวอย่างเช่น สำหรับ URL https://cat.example.co.uk/tabby เว็บไซต์คือ https://example.co.uk และสำหรับ https://www.education.sa.gov.au เว็บไซต์คือ https://education.sa.gov.au
URL เว็บไซต์ (มีรูปแบบและ eTLD +1)
https://cat.example.com/tabby ("https", "example.com")
https://cat.example.co.uk/tabby ("https", "example.co.uk")

ซึ่งต่างจาก origin ที่จะมี port ด้วย

โดเมนย่อย

โดเมนภายในโดเมนระดับที่สูงกว่า

สำหรับเว็บไซต์ที่มีโดเมนระดับบนสุดแบบ 1 ส่วน เช่น com หรือ org ส่วนที่อยู่ก่อนโดเมนระดับบนสุด โดยแต่ละส่วนจะคั่นด้วยจุด

  • www.example.com เป็นโดเมนย่อยของ example.com
  • support.api.example.org เป็นโดเมนย่อยของ api.example.org ซึ่งเป็นโดเมนย่อยของ example.org

สำหรับ eTLD แบบ 2 ส่วนซึ่งอนุญาตให้จดทะเบียนได้เฉพาะระดับที่ 3(นั่นคือ รายการในรายการคำต่อท้ายสาธารณะ เช่น co.uk และ github.io) โดเมนย่อยคือส่วนที่อยู่ก่อนหน้าชื่อโดเมนนั้น

  • เช่น cat.example.co.uk เป็นโดเมนย่อยของ example.co.uk

ข้อความที่ตัดตอนมา

ข้อมูลโค้ดประเภทหนึ่งที่ช่วยให้ลิงก์และไฮไลต์ข้อความช่วงหนึ่งในหน้าเว็บได้ เมื่อผู้ใช้ติดตามลิงก์ที่มีข้อความที่ตัดตอนมา เบราว์เซอร์จะพยายามค้นหา เลื่อนไปยัง และไฮไลต์ข้อความภายในหน้าเว็บ

ข้อความที่ตัดตอนมาขึ้นต้นด้วย :~:text= ตามด้วยข้อความค้นหา

เช่น หากต้องการลิงก์ไปยังข้อความ "fragment" ที่ปรากฏขึ้นครั้งแรกในหน้านี้ ให้ใช้ URL https://web.dev/articles/url-parts#:~:text=fragment

ดูข้อมูลเพิ่มเติม: ข้อความที่ตัดตอนมา

โดเมนระดับบนสุด (TLD)

ชื่อโดเมนที่แสดงในฐานข้อมูลโซนรูท เช่น com หรือ org โดเมนระดับบนสุดบางรายการเป็นโดเมนระดับบนสุดตามรหัสประเทศ เช่น uk และ tv

เมื่ออธิบายส่วนต่างๆ ของ URL ของ HTTP หรือ HTTPS นั้น TLD คือชื่อโดเมนที่อยู่ต่อจากจุดสุดท้าย

  • สำหรับ https://example.org โดเมนระดับบนสุดของ URL คือ org
  • สำหรับ https://example.org.au โดเมนระดับบนสุดของ URL คือ au และ org เป็นโดเมนระดับที่ 2 (แม้ว่า org จะเป็นโดเมนระดับบนสุดด้วยก็ตาม) org.au เป็น eTLD แบบ 2 ส่วน

รายการคำต่อท้ายสาธารณะของ eTLD ประกอบด้วยโดเมนที่มี 1, 2 หรือมากกว่า 2 ส่วน ดังนั้น TLD จึงอาจเป็น eTLD ได้เช่นกัน เช่น

  • สำหรับ https://example.com eTLD ของ URL คือ com ซึ่งเป็น TLD ด้วย

ชื่อผู้ใช้

คุณสามารถระบุชื่อผู้ใช้และรหัสผ่าน (ไม่บังคับ) ที่จุดเริ่มต้นของ URL ได้ แต่เราเลิกใช้งานตัวเลือกนี้แล้วเนื่องจากเหตุผลด้านความปลอดภัย และระบบจะไม่สนใจตัวเลือกนี้ในหลายกรณี

เช่น เมื่อใช้ https://user123:password1@example.com ชื่อผู้ใช้จะเป็น user123 โปรดทราบว่าชื่อผู้ใช้ (และรหัสผ่าน) อยู่ในรูปแบบข้อความธรรมดาและไม่ได้เข้ารหัส หากชื่อผู้ใช้มีสัญลักษณ์ : หรือ @ สัญลักษณ์ดังกล่าวต้องเข้ารหัส URL เป็น %3A และ %40 ตามลำดับ


ดูข้อมูลเพิ่มเติม