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

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

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

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

เอกสารนี้อธิบายคำศัพท์ต่างๆ ที่ใช้กับสตริง 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 มีชื่อว่าอะไร คุณยังเปิดหน้านี้ในแท็บแยกได้ที่ https://chrome.dev/url-parts/


ชื่อของส่วน URL แสดงอยู่ด้านล่างตามลำดับตัวอักษร

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

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

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

ชื่อโดเมน

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

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 แทน Fragment

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

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

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

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

แฮช (หรือ Anchor)

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

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

แฮชจะแสดงผลโดย URL API แทน Fragment

โฮสต์

ตามที่กำหนดไว้ในมาตรฐาน URL โฮสต์อาจเป็นชื่อโดเมน ที่อยู่ IPv4 ที่อยู่ 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

บางครั้งจะมีการใช้ "เส้นทาง" เพื่ออ้างอิงถึงชื่อเส้นทางโดยไม่มีชื่อไฟล์ เช่น สำหรับ 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 แบบส่วนเดียว เช่น 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ลิงก์ เบราว์เซอร์ส่วนใหญ่จะเปิดแอปพลิเคชันอีเมลเริ่มต้นโดยใช้ค่าใน hrefURL ของลิงก์

เครื่องหมายคำถามตามด้วยชุดคู่คีย์-ค่าที่แสดงถึงพารามิเตอร์และค่าของพารามิเตอร์ ซึ่งระบุไว้หลัง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

ในบริบทนี้

  • สำหรับ URL ของ HTTP หรือ HTTPS ที่มี 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")

เว็บไซต์ไม่มีพอร์ต ซึ่งแตกต่างจากต้นทาง

โดเมนย่อย

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

สำหรับเว็บไซต์ที่มีโดเมนระดับบนสุดแบบส่วนเดียว เช่น 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

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

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

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

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

ดูข้อมูลเพิ่มเติม: ข้อความบางส่วน

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

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

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

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

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

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

ชื่อผู้ใช้

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

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


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