ข้อมูลบังคับส่วนหัวของคำขอ HTTP ต้องมีอะไร?


คำตอบ:


36

GET / HTTP/1.0 เป็นคำขอ HTTP ที่ถูกกฎหมาย

หากไม่มีHostฟิลด์ส่วนหัวคุณอาจไม่ได้รับผลลัพธ์ที่คุณคาดหวังหากเซิร์ฟเวอร์ปลายทางเป็นโฮสต์เสมือนที่ไม่มีที่อยู่ IP ของตัวเองเพื่อแยกความแตกต่างจากโฮสต์เสมือนอื่น ๆ

HTTP 1.1 ต้องการHostฟิลด์


1
ฉันทำการค้นคว้าด้วยตัวเองแล้วและคุณก็ถูก @gbroiles สำหรับชื่อโฮสต์เสมือนโดยใช้เบราว์เซอร์ที่มี HTTP 1.1 โดยทั่วไป เบราว์เซอร์ส่งชื่อโฮสต์ในส่วนหัวของโฮสต์และเว็บเซิร์ฟเวอร์ให้บริการโฮสต์เสมือนตามชื่อหากกำหนดค่า ด้วยเบราว์เซอร์รุ่นเก่าและ HTTP 1.0 ที่ค่อนข้างเป็นไปได้ แต่คุณต้องมีวิธีแก้ไขเช่น ServerPath Directive ของ apache โชคดีที่เบราว์เซอร์ที่ใหม่กว่าใช้ส่วนขยายเมื่อใช้ HTTP 1.0 เพื่อให้แน่ใจว่าการส่งฟิลด์ส่วนหัวของโฮสต์ w3.org/Protocols/rfc2616/rfc2616-sec14.html
Stephan Kristyn

1
ยังมีเบราว์เซอร์ที่ใช้ HTTP 1.0 จริงหรือไม่
Pacerier

ตัวแทนผู้ใช้จำนวนมากใช้ HTTP 1.0 ผู้ใช้เว็บเบราว์เซอร์จะใช้ HTTP 1.1 หรือ 2.0 หากทำได้ แต่อาจเข้าถึงผ่านพร็อกซีที่รองรับ HTTP 1.0 เท่านั้น ซอฟต์แวร์รวบรวมข้อมูลหรือบอทอาจใช้ HTTP 1.0 ลูกค้าที่เรียบง่ายเช่นwgetใช้ HTTP 1.0 โปรดทราบว่าไม่จำเป็นต้องใช้ความพยายามฝั่งเซิร์ฟเวอร์ในการสนับสนุนไคลเอ็นต์ HTTP 1.0 เนื่องจากเซิร์ฟเวอร์ที่รองรับ HTTP 1.1 จะรองรับไคลเอ็นต์ HTTP 1.0 (HTTP 1.1 ถูกสร้างขึ้นเพื่อการเพิ่มประสิทธิภาพแบบก้าวหน้าบน HTTP 1.0 คุณสมบัติที่ไม่เข้ากันเช่น chunked การเข้ารหัสและค่าเริ่มต้น keep-alive เริ่มต้นสำหรับการร้องขอ HTTP 1.0
thomasrutter

3

ไม่จำเป็นต้องมีส่วนหัว HTTP ในคำขอ ไม่มีส่วนหัวการตอบสนองที่จำเป็นอย่างใดอย่างหนึ่ง

ทั้งหมดนั้นและอื่น ๆ ในHTTP 1.1 - RFC 2616


15
คุณเข้าใจผิด ตาม RFC คุณเชื่อมโยงที่นี่: "ลูกค้าจะต้องรวมฟิลด์ส่วนหัวของโฮสต์ในข้อความคำขอ HTTP / 1.1 ทั้งหมด" ดังนั้นHostส่วนหัวมีผลบังคับใช้
user219882

2
ถูกต้อง แต่ไม่มีข้อกำหนดว่าไคลเอนต์ใช้ HTTP / 1.1 ตั้งแต่แรก
Chris S

2
ความยาวเนื้อหาหรือการเข้ารหัสการถ่ายโอนเป็นสิ่งจำเป็นเฉพาะเมื่อนิติบุคคลส่งมอบพร้อมกับคำขอหรือการตอบสนองและในหลาย ๆ กรณีการร้องขอหรือการตอบสนองจะไม่มีเอนทิตี (เช่นคำขอ GET หรือการตอบสนอง 302)
Brandon Rhodes

6
ฉันไม่สามารถลงคะแนนได้ แต่คำตอบนี้ผิด โปรดแก้ไขหรือลบ
vikingsteve

4
ฉันเห็นด้วยกับไวกิ้ง คำตอบของคุณแสดงว่า HTTP 1.1 ไม่มีส่วนหัวที่จำเป็น
nullstellensatz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.