ฉันกำลังพยายามตั้งค่าการควบคุมบางอย่างใน Apache ผ่าน .htaccess งานนี้:
<LimitExcept GET>
Order allow,deny
Allow from all
Deny from all
</LimitExcept>
ขณะนี้ไม่ได้:
<LimitExcept POST>
Order allow,deny
Allow from all
Deny from all
</LimitExcept>
โปรดช่วยฉันเข้าใจสิ่งที่เกิดขึ้นที่นี่
ตัวอย่างกรณีทดสอบ:
ฉันสร้างแบบฟอร์ม HTML อย่างง่าย (form.html) เพื่อทดสอบสิ่งต่างๆ:
<form method="post" action="./test/index.html">
<input type="submit" name="submit" value="submit" />
</form>
ฉันสร้างโฟลเดอร์ย่อย "ทดสอบ" ด้วยสองไฟล์:
- index.html (<p>สวัสดีชาวโลก</p>)
- .htaccess (มีเนื้อหาเหมือนกับบล็อกโค้ดด้านบนทุกประการ)
ในกรณีของไฟล์ .htaccess เวอร์ชันแรก การส่งแบบฟอร์ม HTML จะทำให้เกิดข้อผิดพลาด 403 ในขณะที่การเข้าถึงโดยตรง (ป้อนที่อยู่แบบเต็มในเบราว์เซอร์ - เช่น /test/index.html) จะไม่ถูกปิดกั้น นี้เป็นไปตามคาด อย่างไรก็ตาม ในกรณีของไฟล์ .htaccess เวอร์ชันที่สอง ทั้งการส่งแบบฟอร์ม HTML และการเข้าถึงโดยตรงจะส่งผลให้เกิดข้อผิดพลาด 403
ฉันไม่คิดว่านี่เป็นข้อบกพร่อง (ทดสอบใน Apache 2.2 และ 2.4) แต่การรู้ว่าคนอื่นสามารถทำซ้ำได้ก็จะมีประโยชน์มาก แน่นอน ท้ายที่สุดแล้ว ฉันอยากจะเข้าใจว่าเหตุใดสิ่งต่างๆ จึงไม่เป็นไปตามที่ตั้งใจไว้