是什么导致http表单提交后的数据主体为空?

| 背景: 我维护着三个具有自动错误跟踪功能的应用程序(通过带有错误详细信息的电子邮件)。其中两个是用Java和php编写的。 问题: 偶尔我会收到错误跟踪消息,指出操作页面所需的缺少ID。错误跟踪包括始终为空的请求内容。该请求始终为POST类型,可以通过简单页面或AJAX表单提交后生成。 [EDIT]不涉及文件上传。这是一个简单的形式method = \“ POST \”。 我看不到浏览器类型和空请求之间的任何特殊关联。我显然不能在开发或测试平台上重现此错误,因为它是随机的。 我怀疑此问题还会影响其他平台,例如.NET 关于会导致表单完全为空以及如何最好地解决该问题的任何想法,除了缺少必需的参数(由于URL永远不会访问这些操作页面),它会简单地引发错误(而不是IllegalStateException)。     
已邀请:
        在执行POST请求时,PHP用发布数据的大小填充变量
$_SERVER[\'CONTENT_LENGTH\']
。对于GET请求不存在。 如果发布的数据太大(大于PHP中的
post_max_size
指令的值)或具有无效的结构,则
$_POST
数组为空(因为PHP无法解码已发布的数据),但仍会填充
$_SERVER[\'CONTENT_LENGTH\']
。 我相信JSP应该有类似的东西。 如果您不发送
$_SERVER
(或等效的JSP)的内容,建议您开始做。如果这样做,则检查它的
CONTENT_LENGTH
值(或等效的JSP)。 此外,在PHP中,您可以启用
always_populate_raw_post_data
指令,并在电子邮件中包含
$HTTP_RAW_POST_DATA
。它不适用于具有
enctype=\'multipart/form-data\'
的表单(用于上传文件的表单),但是另一个SO问题的答案描述了解决此问题的方法。     

要回复问题请先登录注册