มีความเข้าใจผิดทั่วไป (และใช้ผิด) ที่เกี่ยวข้องกับ403 Forbidden
: ไม่ควรให้อะไรเกี่ยวกับสิ่งที่เซิร์ฟเวอร์คิดเกี่ยวกับการร้องขอ มันออกแบบมาโดยเฉพาะที่จะพูด
ฉันได้รับสิ่งที่คุณร้องขอ แต่ฉันจะไม่จัดการกับคำขอไม่ว่าคุณจะพยายามทำอะไร ดังนั้นหยุดพยายาม
UA หรือไคลเอนต์ใด ๆควรตีความว่านั่นหมายความว่าคำขอจะไม่ทำงานและตอบสนองอย่างเหมาะสม
สิ่งนี้มีความเกี่ยวข้องกับลูกค้าที่จัดการคำขอในนามของผู้ใช้: หากผู้ใช้ไม่ได้ลงชื่อเข้าใช้หรือพิมพ์ผิดไคลเอนต์ที่จัดการคำขอควรตอบว่า "ฉันขอโทษ แต่ฉันทำอะไรไม่ได้" หลังจากครั้งแรก มันได้รับ403
และหยุดการจัดการคำขอในอนาคต เห็นได้ชัดว่าหากคุณต้องการให้ผู้ใช้ยังคงสามารถร้องขอการเข้าถึงข้อมูลส่วนบุคคลของพวกเขาหลังจากความล้มเหลวนี่เป็นพฤติกรรมที่ไม่เป็นมิตรกับผู้ใช้
403
เป็นในทางตรงกันข้ามกับ401 Authorization Required
ที่ไม่ให้ออกไปที่เซิร์ฟเวอร์จะจัดการการร้องขอตราบเท่าที่คุณส่งผ่านข้อมูลประจำตัวที่ถูกต้อง 403
ซึ่งมักจะเป็นสิ่งที่ผู้คนคิดว่าเมื่อพวกเขาได้ยิน
นอกจากนี้ยังแตกต่างกับ404 Page Not Found
ที่คนอื่นชี้ให้เห็นได้รับการออกแบบไม่เพียง แต่จะพูดว่า "ฉันไม่พบหน้านั้น" แต่เพื่อแนะนำให้ลูกค้าว่าเซิร์ฟเวอร์ไม่ได้เรียกร้องความสำเร็จหรือความล้มเหลวสำหรับการร้องขอในอนาคต
ด้วย401
และ404
เซิร์ฟเวอร์จะไม่พูดอะไรกับลูกค้าหรือ UA เกี่ยวกับวิธีที่พวกเขาควรดำเนินการ: พวกเขาสามารถพยายามโดยหวังว่าจะได้รับการตอบสนองที่แตกต่างกัน
ดังนั้น404
เป็นวิธีที่เหมาะสมในการจัดการกับหน้าเว็บที่คุณไม่ต้องการที่จะแสดงให้ทุกคน แต่ไม่ต้องการที่จะให้ออกไปอะไรเกี่ยวกับเหตุผลที่คุณจะไม่แสดงในบางสถานการณ์
แน่นอนว่าสิ่งนี้ถือว่าลูกค้าทำตามคำขอสำหรับความผิดพลาดเล็กน้อยของ RFC ลูกค้าที่ประสงค์ร้ายจะไม่สนใจเกี่ยวกับรหัสสถานะที่ส่งคืนยกเว้นในกรณีที่เกิดขึ้นโดยบังเอิญ หนึ่งจะรู้ว่ามันเป็นหน้าผู้ใช้ที่ซ่อนอยู่ (หรือหน้าผู้ใช้ที่ซ่อนอยู่) โดยการเปรียบเทียบกับหน้าผู้ใช้อื่น ๆ ที่รู้จัก
users/*
นั่นคือสมมติว่าคุณเป็นตัวจัดการ ถ้าฉันรู้ว่าusers/foo
, users/bar
และusers/baaz
การทำงานของเซิร์ฟเวอร์กลับ401
, 403
หรือ404
สำหรับusers/quux
ไม่ได้หมายความว่าฉันจะไม่ไปลองโดยเฉพาะอย่างยิ่งถ้าฉันมีเหตุผลที่จะเชื่อว่ามีเป็นquux
ผู้ใช้ สถานการณ์ตัวอย่างมาตรฐานคือ Facebook: โปรไฟล์ของฉันเป็นแบบส่วนตัว แต่ความคิดเห็นของฉันเกี่ยวกับโปรไฟล์สาธารณะไม่ได้ ลูกค้าที่เป็นอันตรายรู้ว่าฉันมีอยู่แม้ว่าคุณจะกลับมา404
ที่หน้าโปรไฟล์ของฉัน
ดังนั้นรหัสสถานะไม่ได้มีไว้สำหรับกรณีการใช้งานที่เป็นอันตรายพวกเขามีไว้สำหรับลูกค้าที่เล่นตามกฎ และสำหรับลูกค้าเหล่านั้นคำขอ401
หรือ404
ที่เหมาะสมที่สุด