host
หัวบอกเว็บเซิร์ฟเวอร์ที่โฮสต์เสมือนกับการใช้งาน (ถ้าตั้งค่า) คุณยังสามารถมีโฮสต์เสมือนเดียวกันได้โดยใช้นามแฝงหลายตัว(= โดเมนและโดเมนตัวแทน) ในกรณีนี้คุณยังคงมีความเป็นไปได้ที่จะอ่านส่วนหัวนั้นด้วยตนเองในเว็บแอปของคุณหากคุณต้องการให้ลักษณะการทำงานที่แตกต่างกันตามโดเมนต่างๆที่ระบุ เป็นไปได้เพราะในเว็บเซิร์ฟเวอร์ของคุณคุณสามารถ (และถ้าฉันไม่เข้าใจผิดคุณต้อง) ตั้งค่าvhost หนึ่งรายการให้เป็นโฮสต์เริ่มต้น vhost เริ่มต้นนี้ถูกใช้เมื่อใดก็ตามที่host
ส่วนหัวไม่ตรงกับโฮสต์เสมือนที่กำหนดค่าไว้
นั่นหมายความว่า: คุณเข้าใจถูกแล้วแม้ว่าการพูดว่า "หลายโฮสต์" อาจทำให้เข้าใจผิดได้บ้าง: โฮสต์ (เครื่องที่ระบุแอดเดรส) เหมือนกัน แต่สิ่งที่ได้รับการแก้ไขไปยังที่อยู่ IP คือชื่อโดเมนที่แตกต่างกัน(รวมถึงโดเมนย่อย) ที่ถูกอ้างถึงด้วย เป็นชื่อโฮสต์ (แต่ไม่ใช่โฮสต์!)
แม้ว่าจะไม่ใช่ส่วนหนึ่งของคำถาม แต่ความจริงที่น่าสนใจ: ข้อกำหนดนี้ทำให้เกิดปัญหากับ SSL ในช่วงแรก ๆ เนื่องจากเว็บเซิร์ฟเวอร์ต้องส่งมอบใบรับรองที่ตรงกับโดเมนที่ไคลเอ็นต์แจ้งไว้ อย่างไรก็ตามเพื่อให้ทราบว่าจะใช้ใบรับรองใดเว็บเซิร์ฟเวอร์ควรทราบชื่อโฮสต์ที่ระบุแอดเดรสล่วงหน้า แต่เนื่องจากไคลเอนต์ส่งข้อมูลนั้นผ่านช่องทางเข้ารหัสเท่านั้น (ซึ่งหมายความว่า: หลังจากส่งใบรับรองไปแล้ว) เซิร์ฟเวอร์จึงต้องถือว่าคุณเรียกดูโฮสต์เริ่มต้น นั่นหมายถึงโดเมนที่มีการรักษาความปลอดภัย ssl หนึ่งรายการต่อการรวมที่อยู่ IP / พอร์ต
นี้ได้รับการเอาชนะด้วยชื่อเซิร์ฟเวอร์บ่งชี้ ; อย่างไรก็ตามนั่นเป็นการทำลายความเป็นส่วนตัวอีกครั้งเนื่องจากตอนนี้ชื่อเซิร์ฟเวอร์ถูกโอนเป็นข้อความธรรมดาอีกครั้งดังนั้นทุกคนที่อยู่ตรงกลางจะเห็นว่าชื่อโฮสต์ใดที่คุณพยายามเชื่อมต่อ
แม้ว่าเว็บเซิร์ฟเวอร์จะทราบชื่อโฮสต์จาก Server Name Indication แต่host
ส่วนหัวจะไม่ล้าสมัยเนื่องจากข้อมูลการบ่งชี้ชื่อเซิร์ฟเวอร์จะใช้ภายในการจับมือ TLS เท่านั้น ด้วยการเชื่อมต่อที่ไม่ปลอดภัยจะไม่มีการระบุชื่อเซิร์ฟเวอร์เลยดังนั้นhost
ส่วนหัวจึงยังคงใช้ได้ (และจำเป็น)
ข้อเท็จจริงที่น่าสนใจอีกประการหนึ่ง: เว็บเซิร์ฟเวอร์ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) ปฏิเสธคำขอ http ของคุณหากไม่มีhost
ส่วนหัวเดียวแม้ว่าจะสามารถละเว้นได้เนื่องจากมีการกำหนดค่า vhost เริ่มต้นไว้เท่านั้น นั่นหมายถึงข้อมูลขั้นต่ำที่จำเป็นในคำขอ http- (get-) คือบรรทัดแรกที่มีMETHOD
RESOURCE
และPROTOCOL VERSION
และอย่างน้อยที่สุดก็คือhost
- ส่วนหัวดังนี้:
GET /someresource.html HTTP/1.1
Host: www.example.com
ในเอกสาร MDN บน Host-Headerพวกเขาใช้วลีนี้:
ต้องส่งฟิลด์ส่วนหัวของโฮสต์ในข้อความคำขอ HTTP / 1.1 ทั้งหมด รหัสสถานะ 400 (คำขอไม่ถูกต้อง) จะถูกส่งไปยังข้อความคำขอ HTTP / 1.1 ใด ๆ ที่ไม่มีฟิลด์ส่วนหัวของโฮสต์หรือมีมากกว่าหนึ่ง
ดังกล่าวโดย Darrel มิลเลอร์รายละเอียดที่สมบูรณ์สามารถพบได้ในRFC7230
vhost
เพียง 3 เหตุการณ์ใกล้เคียงที่virtual host
มีความหมายไม่ใกล้เคียงกับวลีของคุณและ 12 สำหรับdefault
พอร์ตส่วนใหญ่