![为什么 POST 可能会导致黑洞?](https://linux22.com/image/564118/%E4%B8%BA%E4%BB%80%E4%B9%88%20POST%20%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%AF%BC%E8%87%B4%E9%BB%91%E6%B4%9E%EF%BC%9F.png)
我正在使用 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"
无论其他表单使用的是 CakePHP 还是常规 PHP,都可以进行 POST 操作。
我不知道如何超越 0 字节响应。我的问题不是“为什么这不起作用?”而是“我如何找出不起作用的原因?”
记录显示,php.ini 设置为显示错误,并且成功显示语法错误等。
答案1
好的,所以问题是由于错误引起的,但我从未发现错误是什么。我只能通过反复试验来解决这个问题(啊哼) 错误,我仍然想知道如何才能更有条理地完成此操作。
对于任何感兴趣的人,问题都与 Cake 预期的缺失字段有关。我禁用了一个预先填充了来自其他地方的数据的输入字段。我没有意识到禁用输入会阻止其值被提交。我的解决方法是包含一个隐藏字段。
不过,我还是不知道为什么这些错误没有显示出来,我也不确定为什么唯一的线索是访问日志中的 404。我会把这个问题搁置几天,以防有人想提出原因。
更新:事实证明,这是 CakePHP 的一项安全“功能”。我的表单有一个禁用的输入,这意味着 Cake 通过表单传递的字段名称哈希与它返回的内容不匹配(禁用的输入不会被发布)。