【问题标题】:$_POST is empty or truncated intermittently$_POST 为空或间歇性截断
【发布时间】:2012-11-01 20:02:10
【问题描述】:

我们发现了一个与此处报告的问题相同的问题:

Intermittent empty $_POST issue

我不确定这个问题是否得到了解决(但我没有能力对那个帖子发表评论)。

这是一个每天提交数千次的 extjs 表单(json 编码数据),每天可能记录 20 次失败(记录到我们保存的文本日志中)。我们使用的是 Apache,PHP 5.3.14。

我们对遇到空和截断 POST 数据的用户进行了广泛搜索,并尝试了许多方法,包括:

  • 检查 php://input 的值(也为空/截断)
  • 检查/增加配置设置,如 post_max_size
  • 明确设置内容类型
  • 尝试使用 keepalive 设置
  • 当数据被截断时,看起来是随机的(不是特殊字符)
  • POST 数据的长度似乎不是一个因素(在随机位置截断,与被 POST 回的字段数量无关)

一个潜在的线索是,当 POST 完全为空时,它似乎总是在 Internet Explorer 或 Safari 中。对于被截断的那些,它似乎并不特定于特定的浏览器(因此这里可能存在两个不同的问题)。

我们对尝试什么的想法已经不多了——有什么想法吗?

【问题讨论】:

  • 您是否检查过Content-Length 标头的值是否对应于发布内容的长度,您是否检查过这些人是否使用了代理?另见:stackoverflow.com/questions/328281/…
  • @Neal 这是一个通过“new Ext.FormPanel”创建的extjs表单,“name”和“id”参数设置为“formPanelID”,“url”参数设置为php文件处理提交。有两个保存按钮(具有不同的 ID),带有调​​用 submitForm(form) 的“单击”侦听器。在 submitForm() 内部,我们正在做一些验证,然后使用 form.getForm().submit() 方法提交表单(json 编码):'POST'。这里涉及很多代码——有什么特别有用的吗?
  • @Gijs 打印出 Content-Length 的值实际上是我要添加到我们的问题日志记录中的下一件事——我将添加它并尽快让您知道它显示的内容因为我有一些数据。
  • @Gijs 所以对于大约一半的错误,我们看到 0 Content-Length 和 0 POST 数据——这些似乎只发生在 MSIE 中(尽管我认为我偶尔在 Safari 中看到它们以前的日志)。然后有一些 MSIE 的 Content-Length 是非 0,但是发布的数据是空的。我猜这两个案例在某种程度上是相关的。但是似乎有第三种情况,它看起来不是特定于浏览器的,其中 Content-Length 大于 POST 数据的大小,并且并非所有字段都按预期 POST,并且其中一个被随机截断中间。
  • 另一个有趣的细节——我们尝试打开 KeepAlive(保持连接打开 1 秒),它导致 MSIE 空 POST 错误的发生率显着增加(不特定于 IE 版本-- 看到 IE8 和 IE9 的实例)。

标签: php post apache2 truncated


【解决方案1】:

我们在我们的应用中发现了一些可能导致问题的东西。我们有一个使用 javascript 的菜单,它正在执行表单提交,即 document.formname.submit()。人们在整个页面加载之前点击菜单。此提交有可能提交表单的一部分。这是一个与服务器无关的 javascript HTML 问题。

【讨论】:

    猜你喜欢
    • 2012-02-06
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2011-05-07
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多