我有一个Joomla网站,每隔一段时间,当我通过表单提交的东西,我得到一个HTTP 413错误:
请求的实体太大
请求的资源/index.php不允许POST请求的请求数据,或请求中提供的数据量超过容量限制。
在我得到的error.log文件中:
无效的Content-Length,referer:[site] /index.php
这似乎与请求的实际大小没有任何关系,原因如下:
a)我修改了Apache和PHP的configuration。 在Apache中,我尝试增加LimitRequestBody,并在PHP post_max_size,max_input_vars,memory_limit,甚至upload_max_filesize。 每个值都远远超出了发生错误的典型请求中发送的值。
b)这个错误是随机popup的,经常只是刷新就可以让我通过。
c)我检查了Fiddler中的请求,确保一切都正确,标题中指明的内容长度和请求本身的内容。 一切似乎都是按顺序的。 奇怪的是,当我通过Fiddler怨恨完全相同的请求时,我从来没有得到错误。 看来我只能通过浏览器重新创build它。
所以我在我的智慧结束在这里。 我甚至不知道在哪里寻找问题了。 我不知道它是Apache还是PHP(尽pipe我在PHP错误日志中找不到任何东西,所以也许这意味着Apache更可能是罪魁祸首?),或者PHP,或者特别是我的Joomla站点(我的赌注在Joomla上,直到在testing脚本上重新创build了一个错误,并且有一个非常基本的post表单,尽pipe它在Joomla网站上popup得更多)。
如果有人能就此提出任何build议,我将非常感激!
时间爆发Wireshark [.org]。 在networking上捕获实际的HTTP请求,以便查看真正构成总大小的内容。 请记住,总的请求大小,包括http头(其中包括cookie)可以推动你超过极限。 一些浏览器加载项或代理可能正在添加到请求中。
好吧,我想我终于到了某个地方!
我在服务器上设置wireshark时遇到了麻烦,所以首先我使用apache的LogFormat指令来logging来自请求中的字节数,使用%I参数。
我注意到,当我得到了413错误,服务器接收到更less的字节与请求,然后当它正确处理。 然后,我使用mod_dumpio来查看整个请求,当我得到错误时,肯定有很多错误。 另外,70007代码popup日志,据我所知,意味着超时。
所以我开始认为这个问题实际上可能是我的连接,而不是与服务器有什么关系。 我问一些人testing网站,没有人报告任何问题,所以我猜测就是这样。
所以最后我想这里没有什么可以看到的,但是也许我的经验会挽救一些可怜的灵魂,我所经历的压力。