รูปแบบของคำขอ HTTP และการตอบกลับ HTTP มีความคล้ายคลึงกัน และทั้งสองรูปแบบมีโครงสร้างดังต่อไปนี้:
เริ่มต้นด้วยบรรทัดสถานะ + CRLF (การขึ้นบรรทัดใหม่และการป้อนบรรทัด)
โมดูลส่วนหัวบรรทัดหรือหลายบรรทัด + CRLF
บรรทัดว่าง เช่น CRLF
เนื้อหาข้อความเสริม เช่น ไฟล์ ข้อมูลการสืบค้น เอาต์พุตการสืบค้น
ตัวอย่างเช่น ส่วนหัวการตอบกลับของเซิร์ฟเวอร์มีลักษณะดังนี้:
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (บรรทัดว่าง)<!doctype ...><html><head>...</head><body> ... </body></html>
บรรทัดสถานะประกอบด้วยเวอร์ชัน HTTP รหัสสถานะ และข้อความสั้นที่สอดคล้องกับรหัสสถานะ
ตารางต่อไปนี้แสดงรายการรหัสสถานะ HTTP และข้อความที่เกี่ยวข้องซึ่งอาจส่งคืนจากเซิร์ฟเวอร์:
รหัสสถานะ | ข้อมูล | อธิบาย |
---|---|---|
100 | ดำเนินการต่อ | เซิร์ฟเวอร์ได้รับคำขอเพียงบางส่วนเท่านั้น แต่ตราบใดที่เซิร์ฟเวอร์ไม่ปฏิเสธ ไคลเอนต์จะดำเนินการตามคำขอต่อไป |
101 | การสลับโปรโตคอล | โปรโตคอลสวิตช์เซิร์ฟเวอร์ |
200 | ตกลง | คำขอได้รับการยืนยันแล้ว |
201 | สร้าง | คำขอเสร็จสมบูรณ์และมีการสร้างทรัพยากรใหม่ |
202 | ได้รับการยอมรับ | คำขอได้รับการยอมรับแต่ไม่ได้ดำเนินการ |
203 | ข้อมูลที่ไม่น่าเชื่อถือ | |
204 | ไม่มีเนื้อหา | |
205 | รีเซ็ตเนื้อหา | |
206 | เนื้อหาบางส่วน | |
300 | หลายทางเลือก | ตารางไฮเปอร์ลิงก์ ผู้ใช้สามารถเลือกไฮเปอร์ลิงก์และเข้าถึงไฮเปอร์ลิงก์ได้สูงสุด 5 รายการ |
301 | ย้ายถาวร | หน้าที่ร้องขอถูกย้ายไปยัง URL ใหม่ |
302 | พบ | หน้าที่ร้องขอถูกย้ายไปยัง URL ใหม่ชั่วคราว |
303 | ดูอื่นๆ | หน้าที่ร้องขอสามารถพบได้ภายใต้ URL อื่น |
304 | ไม่ดัดแปลง | |
305 | ใช้พร็อกซี | |
306 | ไม่ได้ใช้ | รหัสสถานะนี้ไม่ได้ใช้อีกต่อไป แต่รหัสสถานะจะยังคงอยู่ |
307 | การเปลี่ยนเส้นทางชั่วคราว | หน้าที่ร้องขอถูกย้ายไปยัง URL ใหม่ชั่วคราว |
400 | คำขอไม่ถูกต้อง | เซิร์ฟเวอร์ไม่รู้จักคำขอ |
401 | ไม่ได้รับอนุญาต | หน้าที่ร้องขอต้องใช้ชื่อผู้ใช้และรหัสผ่าน |
402 | จำเป็นต้องชำระเงิน | รหัสสถานะนี้ยังใช้ไม่ได้ |
403 | ต้องห้าม | ห้ามเข้าถึงหน้าที่ร้องขอ |
404 | ไม่พบ | เซิร์ฟเวอร์ไม่พบหน้าที่ร้องขอ |
405 | ไม่อนุญาตให้ใช้วิธีการ | ไม่อนุญาตให้ใช้วิธีการที่ระบุในคำขอ |
406 | ไม่เป็นที่ยอมรับ | เซิร์ฟเวอร์สามารถสร้างการตอบกลับที่ไคลเอ็นต์ไม่สามารถยอมรับได้เท่านั้น |
407 | จำเป็นต้องมีการรับรองความถูกต้องของพร็อกซี | พร็อกซีเซิร์ฟเวอร์ต้องได้รับการรับรองความถูกต้องก่อนจึงจะสามารถให้บริการคำขอได้ |
408 | ขอหมดเวลา | เวลาในการร้องขอเกินเวลาที่เซิร์ฟเวอร์สามารถรอได้ และการเชื่อมต่อถูกตัดการเชื่อมต่อ |
409 | ขัดแย้ง | มีข้อขัดแย้งในการร้องขอ |
410 | ไปแล้ว | หน้าที่ร้องขอไม่สามารถใช้งานได้อีกต่อไป |
411 | ความยาวที่ต้องการ | ไม่ได้กำหนด "ความยาวเนื้อหา" เซิร์ฟเวอร์ปฏิเสธที่จะยอมรับคำขอ |
412 | เงื่อนไขเบื้องต้นล้มเหลว | เงื่อนไขเบื้องต้นที่ร้องขอได้รับการประเมินโดยเซิร์ฟเวอร์ว่าเป็นเท็จ |
413 | คำขอเอนทิตีมีขนาดใหญ่เกินไป | เซิร์ฟเวอร์ปฏิเสธที่จะยอมรับคำขอเนื่องจากเอนทิตีที่ร้องขอมีขนาดใหญ่เกินไป |
414 | URL คำขอยาวเกินไป | เซิร์ฟเวอร์ปฏิเสธที่จะยอมรับคำขอเนื่องจาก URL ยาวเกินไป ข้อมูลการสืบค้นจำนวนมากมักปรากฏขึ้นเมื่อแปลงคำขอ "POST" เป็นคำขอ "GET" |
415 | ประเภทสื่อที่ไม่รองรับ | เซิร์ฟเวอร์ปฏิเสธที่จะยอมรับคำขอเนื่องจากไม่รองรับประเภทสื่อ |
417 | ความคาดหวังล้มเหลว | |
500 | ข้อผิดพลาดเซิร์ฟเวอร์ภายใน | คำขอไม่สมบูรณ์และเซิร์ฟเวอร์พบเงื่อนไขที่ไม่คาดคิด |
501 | ไม่ได้นำไปปฏิบัติ | คำขอไม่สมบูรณ์และเซิร์ฟเวอร์ไม่มีฟังก์ชันที่จำเป็น |
502 | เกตเวย์ไม่ดี | คำขอไม่สมบูรณ์และเซิร์ฟเวอร์ได้รับการตอบสนองที่ไม่ถูกต้องจากเซิร์ฟเวอร์อัปสตรีม |
503 | บริการไม่พร้อมใช้งาน | คำขอไม่สมบูรณ์และเซิร์ฟเวอร์รีสตาร์ทหรือปิดระบบชั่วคราว |
504 | เกตเวย์หมดเวลา | หมดเวลาเกตเวย์ |
505 | ไม่รองรับเวอร์ชัน HTTP | เซิร์ฟเวอร์ไม่รองรับเวอร์ชัน HTTP ที่ระบุ |
ตารางต่อไปนี้แสดงวิธีการที่ใช้ในการตั้งค่ารหัสสถานะในคลาส HttpServletResponse:
ส.น | วิธีการ และ คำอธิบาย |
---|---|
1 | โมฆะสาธารณะ setStatus (int statusCode) วิธีนี้สามารถกำหนดรหัสสถานะใดก็ได้ หากการตอบกลับของคุณมีรหัสสถานะพิเศษและเอกสาร โปรดเรียกใช้เมธอด setStatus ก่อนที่จะส่งคืนสิ่งใดๆ ด้วย PrintWriter |
2 | โมฆะสาธารณะ sendRedirect(String url) วิธีการนี้สร้างการตอบสนอง 302 และส่วนหัว ที่ตั้ง เพื่อบอก URL เป็นเอกสารใหม่ |
3 | โมฆะสาธารณะ sendError (รหัส int, ข้อความสตริง) วิธีการนี้จะแทรกรหัสสถานะ (ปกติคือ 404) และข้อความสั้น ๆ ลงในเอกสาร HTML โดยอัตโนมัติและส่งกลับไปยังไคลเอนต์ |
ตัวอย่างต่อไปนี้จะส่งรหัสข้อผิดพลาด 407 ไปยังเบราว์เซอร์ และเบราว์เซอร์จะบอกคุณว่า "ต้องการการรับรองความถูกต้อง!!!"
<html><head><title>การตั้งค่ารหัสสถานะ HTTP</title></head><body><% // ตั้งรหัสข้อผิดพลาดและอธิบายเหตุผล response.sendError(407, "Need Authentication!!!" ) ; %></body></html>
การเข้าถึงหน้า JSP ข้างต้น คุณจะได้รับผลลัพธ์ดังต่อไปนี้:
คุณยังสามารถลองใช้รหัสสถานะอื่นเพื่อดูว่าคุณได้รับผลลัพธ์ที่ไม่คาดคิดหรือไม่