当我尝试将 XML 文件传输到服务器时出现此错误。
在我的场景中,网页使用 javascript 处理 XML 文件,然后将 XML 处理后的文件上传到 PHP 服务器。
文件容量为400K。
php.ini
post_max_size = 8M
upload_max_filesize = 2M
memory_limit = 128M
客户端初始请求:
$.ajax({
type: "GET",
url: "/dirname/filename.xml",
dataType: "xml",
async: false,
success: function(data){
xmlCID = data;
},
error: function(jqXHR, textStatus, errorThrown){
console.log(jqXHR.responseText, textStatus, errorThrown);
alert(textStatus);
}
});
客户端上传请求
$.ajax({
url: "/dirname/filename.xml",
dataType: "xml",
method: "PUT",
processData: false,
data: xmlCID,
success: function(data){
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown){
alert(jqXHR.responseText, textStatus, errorThrown);
}
});
不幸的是,服务器响应是:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>413 - Request Entity Too Large</title>
</head>
<body>
<h1>413 - Request Entity Too Large</h1>
</body>
</html>
最佳答案
正如 hakre 所指出的,除了 PHP 中的设置之外,当请求负载的大小超出网络服务器配置允许的范围时,您通常会收到 413 错误。这些指令因服务器而异,但这里有一些常见的指令(如果您使用的是托管平台,您可能需要联系主机的支持团队):
Nginx:查看
client_max_body_size
nginx.conf
指令( http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size )Apache:指令
LimitRequestBody
可用于httpd.conf
或在目录级别.htaccess
文件 ( http://httpd.apache.org/docs/2.4/mod/core.html#limitrequestbody )IIS:查看
maxAllowedContentLength
(requestFiltering
的一部分 >requestLimits
),或UploadReadAheadSize
在 IIS6 中(IIS 解决方案非常依赖于版本,因此我建议进行一些研究)。
如果您通过 HTTP 和 HTTPS 处理请求,请确保相关配置适用于两者。
虽然不太常见(在公司网络中更常见),但这也可能与请求正在传递的其他代理或安全设备有关,因为它们中的每一个都可能有不同的限制来影响请求的处理。
如有疑问,请检查日志:首先,确保请求到达您的服务器(在访问日志中),如果是,请检查响应代码,然后还要检查错误日志。
希望对您有所帮助!
关于javascript - PHP 413(请求实体太大),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428490/