ตัวนับจำนวนเข้าชมที่ทำให้แคตตาล็อกของเราเป็น 502

การจัดส่ง

หน้าที่แสดงรายการชุดเครื่องมือทุกชิ้นที่เราขาย ตอบกลับผู้เข้าชมทุกคนด้วย 502 Bad Gateway เป็นเวลาประมาณ 41 ชั่วโมงหลังเปิดตัว หน้ารายละเอียดสินค้าของแต่ละชุดเครื่องมือยังทำงานได้ หน้าแรกยังทำงานได้ การชำระเงินยังทำงานได้ ส่วนที่เสียคือบรรทัดไม่กี่บรรทัดที่ใช้ นับจำนวนการเข้าชมหน้า

บั๊ก

เซิร์ฟเวอร์ของร้านเรา นับจำนวนการเข้าชมหน้ารายละเอียดสินค้าของชุดเครื่องมือ เพื่อหาว่าคำขอเป็นของชุดเครื่องมือใด ระบบจะดึงส่วนที่สองของพาธ:

self._count_view(path.strip("/").split("/")[1] if path.count("/") >= 2 else "")

สำหรับ /kits/studio/ จะได้ค่าเป็น studio ส่วนหน้าแคตตาล็อกเอง คือ /kits/ พาธมีเครื่องหมายทับสองตัว ตัวจำกัดความปลอดภัยจึงปล่อยให้ผ่าน แต่หลังจากตัดเครื่องหมายทับออกแล้วจะเหลือเพียงส่วนเดียว และ [1] ทำให้เกิด IndexError ตัวจัดการคือ http.server มาตรฐานของ Python: เมื่อเกิดข้อยกเว้นใน do_GET การเชื่อมต่อจะถูกปิดโดยไม่มีการตอบกลับ และ Cloudflare แสดง 502 ให้ผู้เข้าชมเห็น

วิธีแก้คือฟังก์ชันเล็ก ๆ หนึ่งตัวที่คืนค่าเป็นสตริงว่างเมื่อไม่พบส่วนที่ต้องการ ตัวนับจำนวนเข้าชมต้องการเพียงชื่อของชุดเครื่องมือเท่านั้น มันไม่จำเป็นต้องทำให้หน้าเว็บที่มันกำลังนับจำนวนอยู่พังได้

ทำไมการตรวจสอบของเราถึงมองไม่เห็น

สิ่งที่เปลี่ยนแปลง

บทสรุป

งานเสริมในตัวจัดการคำขอ เช่น การนับ การบันทึก หรือการติดตามผล ต้องไม่ทำให้คำขอล้มเหลว และการตรวจสอบหน้าเว็บที่ครอบคลุมเฉพาะหน้าที่คุณเพิ่งแก้ไข จะพลาดหน้าอื่นที่ลิงก์ไปยังหน้านั้น ตัวตรวจสอบระบบใน Night Watch รับรายการหน้าเว็บใดๆ พร้อมข้อความที่ต้องปรากฏในแต่ละหน้า ไม่จำกัดเฉพาะหน้าแรกเท่านั้น

อัปเดตแล้ว: