在我的场景中,网页使用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中的设置之外,当请求有效负载的大小超出Web服务器配置允许的范围时,通常会收到413个错误.这些指令因服务器而异,但这里有一些常见的指令(如果您使用的是托管平台,则可能需要联系主机的支持团队):
> Nginx:查看Nginx.conf的client_max_body_size指令(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:查看IIS6中的maxAllowedContentLength(requestfiltering> requestLimits的一部分)或UploadReadAheadSize(IIS解决方案非常依赖于版本,所以我建议稍微研究一下).
如果您通过HTTP和HTTPS提供请求,请确保相关配置适用于这两者.
虽然不太常见(在公司网络中更常见),但这也可能与请求通过的其他代理或安全设备有关,因为每个代理或安全设备可能具有影响请求处理的不同限制.
如有疑问,请检查日志:首先,确保请求到达您的服务器(在访问日志中),如果是,请检查响应代码,然后检查错误日志.
希望有所帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。