Server response 419 Page Expired
สถานะ HTTP 419 (Page Expired)
สถานะ HTTP 419 (Page Expired) เป็นรหัสที่บ่งบอกว่าหน้าเว็บมีอายุหมดอายุ ซึ่งสามารถก่อให้เกิดปัญหาในการทำงานกับเว็บแอปพลิเคชันได้ รหัสนี้มักเกิดขึ้นจากการหมดอายุของเซสชันผู้ใช้หรือการจัดการ CSRF-token ที่ไม่ถูกต้อง
ในบทความนี้จะพูดถึงสาเหตุที่ทำให้เกิดข้อผิดพลาด 419 ตัวอย่างการเกิดขึ้น และวิธีการแก้ไขในภาษาการเขียนโปรแกรมต่างๆ
สาเหตุของการเกิดสถานะ HTTP 419
- หมดอายุของเซสชันผู้ใช้
- การจัดการ CSRF-token ที่ไม่ถูกต้อง
- การเข้าถึงลิงก์ที่หมดอายุหรือไม่ใช้งาน
- การตั้งค่าแคชที่ไม่ถูกต้อง
ตัวอย่างการเกิดข้อผิดพลาด 419
-
ตัวอย่างจากแบบฟอร์มการเข้าระบบ
- ผู้ใช้กรอกแบบฟอร์มและกดปุ่ม "ส่ง" หลังจากที่เซสชันหมดอายุ
- ผลลัพธ์: เกิดข้อผิดพลาด 419 ขึ้น
-
ตัวอย่างจากการรีเฟรชหน้า
- ผู้ใช้รีเฟรชหน้าเว็บที่มีแบบฟอร์มที่มี CSRF-token ที่หมดอายุ
- ผลลัพธ์: เซิร์ฟเวอร์ส่งกลับรหัส 419
-
ตัวอย่างจากการใช้ AJAX
- ผู้ใช้พยายามส่งคำขอ AJAX แต่เซสชันหมดอายุ
- ผลลัพธ์: เซิร์ฟเวอร์ส่งกลับรหัส 419
วิธีการแก้ไขข้อผิดพลาด 419 ในภาษาการเขียนโปรแกรมต่างๆ
ภาษา | วิธีการแก้ไข | ตัวอย่างโค้ด |
---|---|---|
PHP | ตรวจสอบให้แน่ใจว่าเซสชันถูกเริ่มต้นอย่างถูกต้องและไม่หมดอายุเร็วเกินไป |
session_start(); if ($_SESSION['csrf_token'] !== $_POST['csrf_token']) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); http_response_code(419); } |
JavaScript (Node.js กับ Express) | ใช้ middleware เพื่อตรวจสอบเซสชันและอัปเดตโทเค็น |
app.post('/submit', (req, res) => { if (!req.session.user) { return res.status(419).send('Session expired. Please log in again.'); } // Logic to process form }); |
Python (Flask) | ตรวจสอบให้แน่ใจว่ามีเซสชันที่ใช้งานอยู่ก่อนการดำเนินการที่ต้องการการยืนยันตัวตน |
from flask import Flask, session, redirect, url_for, request @app.route('/submit', methods=['POST']) def submit(): if 'user' not in session: return 'Session expired', 419 // Logic to process form |
การแก้ไขที่แนะนำจะช่วยให้นักพัฒนาหลีกเลี่ยงการเกิดข้อผิดพลาด 419 และปรับปรุงประสบการณ์ของผู้ใช้ในเว็บแอปพลิเคชัน ตรวจสอบให้แน่ใจว่าคุณจัดการเซสชันและโทเค็นอย่างถูกต้องเพื่อป้องกันข้อผิดพลาดดังกล่าว