เนื้อหานี้เป็นส่วนหนึ่งของชุด "ความรู้เบื้องต้นเกี่ยวกับการพัฒนาองค์กร" บทความก่อนหน้านี้:
สวัสดี! วันนี้เราจะเรียนรู้เกี่ยวกับโปรโตคอล HTTP และ HTTPS แต่ก่อนอื่น เรามาชี้แจงประเด็นหนึ่งกันก่อน: เรากำลังพูดถึงโปรโตคอลสำหรับการส่งข้อมูลผ่านเครือข่ายที่ระดับแอปพลิเคชันของโมเดล OSI คุณอาจจำได้ว่าเราได้รู้จักโมเดล OSI ในบทความก่อนหน้านี้ ถ้าจำไม่ผิดนี่ คือ

โปรโตคอลการสื่อสารข้อมูลคืออะไร?
สิ่งที่เราเรียกว่าชุดกฎที่ตกลงกันไว้ซึ่งอนุญาตให้ผู้พัฒนาบริการต่างๆ ส่งข้อมูลในรูปแบบที่ผู้อื่นสามารถเข้าใจได้ ตัวอย่างเช่น คุณสามารถใช้ Google Chrome เพื่อรับข้อมูลจากทั้ง Facebook และ Twitter เนื่องจากนักพัฒนาส่งข้อมูลโดยใช้โปรโตคอล HTTP มาตรฐาน ซึ่งอนุญาตให้เบราว์เซอร์ของคุณสามารถประมวลผลได้ กฎแบบเดียวกันนั้นสะดวกมากสำหรับผู้ที่พัฒนาส่วนเซิร์ฟเวอร์: มีไลบรารีจำนวนมากที่สามารถแปลงข้อมูลให้คุณและส่งโดยใช้โปรโตคอลที่เหมาะสม HTTP ถูกมองว่าเป็นโปรโตคอลสำหรับการส่งหน้า HTML นั่นเป็นวิธีที่ใช้มาเป็นเวลานาน แต่ตอนนี้โปรแกรมเมอร์มักใช้เพื่อส่งทั้งสตริงและไฟล์มีเดีย โดยทั่วไป โปรโตคอลนี้เป็นที่ยอมรับในระดับสากลและหลากหลาย และใช้งานได้ง่ายมาก และตอนนี้เราจะตรวจสอบวิธีการใช้งานโครงสร้างของ HTTP
เราควรทราบทันทีว่าโปรโตคอล HTTP ประกอบด้วยข้อความเท่านั้น สิ่งที่เราสนใจมากที่สุดคือโครงสร้างของข้อความนี้ แต่ละข้อความประกอบด้วยสามส่วน:- บรรทัดเริ่มต้น — กำหนดข้อมูลการดูแลทำความสะอาดบางอย่าง
- ส่วนหัว — สิ่งเหล่านี้อธิบายถึงพารามิเตอร์ของข้อความ
- เนื้อความ — นี่คือเนื้อหาของข้อความ ต้องแยกเนื้อหาออกจากส่วนหัวด้วยบรรทัดว่าง
นี่คือลักษณะของคำขอ HTTP แบบง่าย:
GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
บรรทัดเริ่มต้นระบุว่า:
- GET — วิธีการขอ
- / — เส้นทางของคำขอ
- HTTP/1.1 — เวอร์ชันโปรโตคอล
- โฮสต์ — โฮสต์ที่มีการร้องขอ
- User-Agent — ลูกค้าส่งคำขอ
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
โดยที่ codegym.ccเป็นโฮสต์ /sendเป็นเส้นทางของคำขอ และ ? เป็นตัวคั่นที่ระบุว่าพารามิเตอร์เคียวรีเป็นไปตาม ในตอนท้าย คู่คีย์-ค่า ("key=value") จะแสดงรายการ โดยคั่นด้วยเครื่องหมายแอมเปอร์แซนด์ POST — วิธีนี้เผยแพร่ข้อมูลบนเซิร์ฟเวอร์ คำขอ POST สามารถส่งข้อมูลได้หลายประเภท: พารามิเตอร์เป็นคู่ "คีย์=ค่า", JSON, โค้ด HTML หรือแม้แต่ไฟล์ ข้อมูลทั้งหมดจะถูกส่งไปในเนื้อหาของข้อความ ตัวอย่างเช่น:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc
{
"Id": 12345,
"User": "John"
}
คำขอถูกส่งไปที่ codegym.cc/user/create/json และเวอร์ชันโปรโตคอลคือ HTTP/1.1 "ยอมรับ" ระบุรูปแบบการตอบกลับที่ลูกค้าคาดว่าจะได้รับ "ประเภทเนื้อหา" ระบุรูปแบบของเนื้อหาข้อความที่ส่งในคำขอ "ความยาวเนื้อหา" คือจำนวนอักขระในเนื้อหา คำขอ HTTP สามารถมีส่วนหัวที่แตกต่างกันจำนวนมาก สำหรับข้อมูลเพิ่มเติม โปรดดูที่ข้อมูล จำเพาะของโปรโตคอล
การตอบสนอง HTTP
หลังจากได้รับคำขอ เซิร์ฟเวอร์จะประมวลผลและส่งการตอบกลับไปยังไคลเอ็นต์:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
บรรทัดเริ่มต้นของการตอบกลับประกอบด้วยเวอร์ชันโปรโตคอล (HTTP/1.1) รหัสสถานะ (200) และคำอธิบายสถานะ (ตกลง) ส่วนหัวประกอบด้วยประเภทและความยาวของเนื้อหา เนื้อหาการตอบสนองมีโค้ด HTML ที่เบราว์เซอร์แสดงผลเป็นหน้า HTML
รหัสสถานะการตอบกลับ
ทุกอย่างชัดเจนเกี่ยวกับเนื้อหาและส่วนหัวของข้อความ แต่เราควรพูดสองสามคำเกี่ยวกับรหัสสถานะ รหัสสถานะการตอบกลับจะเป็นตัวเลขสามหลักเสมอ ตัวเลขตัวแรกของรหัสระบุประเภทของการตอบกลับ:- 1xx — ข้อมูล ได้รับคำขอแล้ว เซิร์ฟเวอร์พร้อมที่จะดำเนินการต่อ
- 2xx — สำเร็จ ได้รับคำขอ เข้าใจ และดำเนินการแล้ว
- 3xx — การเปลี่ยนเส้นทาง ต้องดำเนินการเพิ่มเติมเพื่อดำเนินการตามคำขอ
- 4xx — ข้อผิดพลาดของไคลเอ็นต์ คำขอมีข้อผิดพลาดหรือไม่เป็นไปตามโปรโตคอล
- 5xx — ข้อผิดพลาดของเซิร์ฟเวอร์ คำขอถูกสร้างขึ้นอย่างถูกต้อง แต่เซิร์ฟเวอร์ไม่สามารถดำเนินการได้
- 200 ตกลง — ได้รับคำขอและดำเนินการสำเร็จแล้ว
- 201 สร้าง — ได้รับคำขอและดำเนินการสำเร็จ ส่งผลให้มีการสร้างทรัพยากรหรืออินสแตนซ์ใหม่
- 301 ย้ายอย่างถาวร — ทรัพยากรที่ร้องขอถูกย้ายอย่างถาวร คำขอที่ตามมาควรทำโดยใช้ที่อยู่ใหม่
- 307 การเปลี่ยนเส้นทางชั่วคราว — ทรัพยากรถูกย้ายชั่วคราว สำหรับตอนนี้ สามารถเข้าถึงได้โดยใช้การส่งต่ออัตโนมัติ
- 403 ต้องห้าม — เข้าใจคำขอแล้ว แต่ต้องมีการอนุญาต
- 404 ไม่พบ — เซิร์ฟเวอร์ไม่พบทรัพยากรตามที่อยู่นี้
- 501 ไม่ได้ใช้งาน — เซิร์ฟเวอร์ไม่รองรับฟังก์ชันที่จำเป็นในการตอบสนองต่อคำขอ
- ไม่รองรับเวอร์ชัน HTTP 505 — เซิร์ฟเวอร์ไม่รองรับโปรโตคอล HTTP เวอร์ชันที่ระบุ
GO TO FULL VERSION