Apache-2.2

為什麼發布可能會導致黑洞?

  • January 20, 2017

我正在使用 CakePHP 開發應用程序並遇到了一個奇怪的問題:當我將數據發佈到特定方法時,我在訪問日誌中得到一個 0 字節響應和一個簡單的 404 錯誤。

psycho953.psych.susx.ac.uk - - [11/Oct/2011:10:17:43 +0100] "GET /research/ssd/aesthetics/participants/add HTTP/1.1" 200 3255 "-" "Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
psycho953.psych.susx.ac.uk - - [11/Oct/2011:10:17:44 +0100] "POST /research/ssd/aesthetics/participants/add HTTP/1.1" 404 - "http://webvm.psych.sussex.ac.uk/research/ssd/aesthetics/participants/add" "Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"

POST 到其他表單都可以,無論他們使用的是 CakePHP 還是普通的 PHP。

我不知道如何在 0 字節響應之外工作。我的問題不是“為什麼這不起作用?” 作為“我怎樣才能找出什麼不起作用?”

作為記錄,php.ini 設置為顯示錯誤,並成功顯示語法錯誤等。

好的,所以問題是由於錯誤引起的,但我從未發現錯誤是什麼。我只是通過試驗和(啊哼)錯誤解決了這個問題,我仍然想知道如何更有條理地做到這一點。

對於任何感興趣的人來說,這個問題與 Cake 預期的缺失欄位有關。我禁用了一個預先填充了來自其他地方的數據的輸入欄位。我沒有意識到禁用輸入會阻止它的價值被送出。我的解決方法是包含一個隱藏欄位。

不過,我不知道為什麼沒有顯示這些錯誤,也不確定為什麼唯一的線索是訪問日誌中的 404。我會在幾天內不回答這個問題,以防有人想提出這個問題的原因。


**更新:**原來這是 CakePHP 的一個安全“特性”。我的表單有一個禁用的輸入,這意味著 Cake 通過表單傳遞的欄位名稱的散列與它返回的內容不匹配(禁用的輸入不會被 POSTED)。

引用自:https://serverfault.com/questions/320425