Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

เนื่องจาก HTTP เป็นแบบไร้สัญชาติ แล้วจะรักษาเซสชันระหว่างเว็บเบราว์เซอร์และเว็บเซิร์ฟเวอร์ได้อย่างไร


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

การรักษาเซสชันระหว่างเว็บไคลเอ็นต์และเซิร์ฟเวอร์

ให้เราพูดถึงตัวเลือกสองสามอย่างเพื่อรักษาเซสชันระหว่างเว็บไคลเอ็นต์และเว็บเซิร์ฟเวอร์ -

คุกกี้

เว็บเซิร์ฟเวอร์สามารถกำหนด ID เซสชันที่ไม่ซ้ำกันเป็นคุกกี้ให้กับแต่ละเว็บไคลเอ็นต์ และสำหรับคำขอที่ตามมาจากลูกค้า พวกเขาสามารถรับรู้ได้โดยใช้คุกกี้ที่ได้รับ

นี่อาจไม่ใช่วิธีที่มีประสิทธิภาพ เนื่องจากในบางครั้งเบราว์เซอร์ไม่สนับสนุนคุกกี้ ไม่แนะนำให้ใช้ขั้นตอนนี้เพื่อรักษาเซสชัน

ช่องแบบฟอร์มที่ซ่อนอยู่

เว็บเซิร์ฟเวอร์สามารถส่งฟิลด์แบบฟอร์ม HTML ที่ซ่อนอยู่พร้อมกับ ID เซสชันที่ไม่ซ้ำกันดังนี้ −

<input type = "hidden" name = "sessionid" value = "12345">

รายการนี้หมายความว่า เมื่อส่งแบบฟอร์ม ชื่อและค่าที่ระบุจะถูกรวมไว้ใน GET โดยอัตโนมัติ หรือ POST ข้อมูล. ทุกครั้งที่เว็บเบราว์เซอร์ส่งคำขอกลับ session_id สามารถใช้เพื่อติดตามเว็บเบราว์เซอร์ต่างๆ ได้

นี่อาจเป็นวิธีที่มีประสิทธิภาพในการติดตามเซสชัน แต่การคลิกลิงก์ไฮเปอร์เท็กซ์แบบปกติ () จะไม่ส่งผลให้มีการส่งแบบฟอร์ม ดังนั้นฟิลด์ในฟอร์มที่ซ่อนอยู่จึงไม่สามารถรองรับการติดตามเซสชันทั่วไปได้

การเขียน URL ใหม่

คุณสามารถผนวกข้อมูลเพิ่มเติมที่ส่วนท้ายของแต่ละ URL ข้อมูลนี้ระบุเซสชัน เซิร์ฟเวอร์สามารถเชื่อมโยงตัวระบุเซสชันนั้นกับข้อมูลที่เก็บไว้เกี่ยวกับเซสชันนั้นได้

ตัวอย่างเช่น ด้วย https://tutorialspoint.com/file.htm;sessionid=12345 ตัวระบุเซสชันแนบเป็น sessionid =12345 ซึ่งสามารถเข้าถึงได้ที่เว็บเซิร์ฟเวอร์เพื่อระบุลูกค้า

การเขียน URL ใหม่เป็นวิธีที่ดีกว่าในการรักษาเซสชันและใช้ได้กับเบราว์เซอร์เมื่อไม่รองรับคุกกี้ ข้อเสียเปรียบที่นี่คือ คุณจะต้องสร้างทุก URL แบบไดนามิกเพื่อกำหนด ID เซสชัน แม้ว่าหน้าจะเป็นหน้า HTML แบบคงที่อย่างง่าย