当我通过 AJAX 将大量数据发布到 Php 程序时,我遇到了“请求实体太大”的问题。
我认为 mod_security 没有安装或启用,因为没有 /etc/modsecurity 文件夹,而且我在服务器上搜索文件时找不到任何具有该名称的内容。
该域名在 ssl.conf 中的虚拟主机上运行,除了发布大量数据的问题外,一切运行正常。
奇怪的是,我也在本地开发虚拟机上设置了相同的服务器,并且也通过自签名证书在 SSL 上运行,而问题并没有发生在本地机器上;问题只是出在实时专用服务器上。
答案1
它可能有很多种,但是 Apache 中有一条LimitRequestBody
指令,其定义如下:
此指令指定请求主体中允许的字节数,范围从 0(表示无限制)到 2147483647(2GB)。请参阅下面的注释,了解对代理请求的有限适用性。
LimitRequestBody 指令允许用户在指令所处的上下文(服务器、每个目录、每个文件或每个位置)内设置 HTTP 请求消息正文的允许大小限制。如果客户端请求超出该限制,服务器将返回错误响应而不是处理请求。正常请求消息正文的大小将根据资源的性质和该资源允许的方法而有很大差异。CGI 脚本通常使用消息正文来检索表单信息。PUT 方法的实现将要求一个值,该值至少与服务器希望接受的该资源的任何表示一样大。
虽然 Apache 默认设置为0
(无限制),但您自己的安装可能有不同的值。
你还有其他指令限制这样的事情(参见所有以Limit
on开头的指令)https://httpd.apache.org/docs/2.4/mod/core.html),包括头部长度和内容。
您需要仔细查看 Apache 配置。您还可以增加详细程度,这样您的日志文件中就会有更多详细信息。