我有一个在POST请求中接受附件作为多部分表单数据的服务。我想限制服务器接受的附件的大小,以防止滥用。
但是我不能让Apache的LimitRequestBody配置参数工作。无论我配置什么,服务器总是接受我的请求。我期望HTTP 413在超过请求大小时被抛出。
我的设置:负载均衡器Jetty Apache (v2.2.12) -> ->
以下是我的apache配置:
Listen 11443
<VirtualHost _default_:11443>
LimitRequestBody 102400
LimitXMLRequestBody 102400
<Location /one/myapp>
LimitXMLRequestBody 102400
LimitRequestBody 102400
SetEnv proxy-sendcl 1
ProxyPass http://localhost:8080/myapp
ProxyPassReverse http://localhost:8080/myapp
Order Deny,Allow
Allow from all
</Location>
ProxyPass /one http://localhost:8080
ProxyPassReverse /one http://localhost:8080
SSLEngine on
SSLCertificateFile ...host.cer
SSLCertificateKeyFile ...host.key
SSLCertificateChainFile ...host.crt
SSLProxyEngine on
</VirtualHost>安装的是mod-ssl和mod-qos。
我的请求看起来像这样:
POST https://myhost.com/one/myapp/myressource HTTP/1.1
Accept-Encoding: gzip,deflate
Authorization: ...
Accept-Language: en_US
Content-Type: multipart/form-data; boundary="----=_Part_16_248..."
MIME-Version: 1.0
User-Agent: Jakarta Commons-HttpClient/3.1
Host: myhost.com
Content-Length: 5760260
------=_Part_16_248...
Content-Type: application/octet-stream; name=data.raw
Content-Transfer-Encoding: binary
Content-Disposition: form-data; name="file"; filename="data.raw"
... (binary data) ...为什么LimitRequestBody在我的情况下不起作用?
发布于 2013-05-14 18:53:15
似乎指令LimitRequestBody不适用于代理请求。至少在我的例子中使用的版本2.2中不是这样。请参阅:https://issues.apache.org/bugzilla/show_bug.cgi?id=44758
不过,这个问题似乎在最近的版本中得到了解决。请参阅:http://svn.apache.org/viewvc?view=revision&revision=1066444
作为一种变通方法,我检查Content-Length头中的大小并拒绝分块请求。
https://stackoverflow.com/questions/16439722
复制相似问题