我网站的一部分使用方法
从HTML5画布中获取图像 .toDataURL()
然后使用AJAX将原始数据作为POST消息的一部分发送到我的服务器。 在服务器端,我有一个期望长数据字符串的cgi脚本。 我一直都会收到这个错误:
413 (Request Entity Too Large)
我使用的是perl CGI库,而我没有
$CGI::POST_MAX
设置或
$CGI::DISABLE_UPLOADS
集。 这是由于服务器中设置的限制吗?我使用apache和nginx作为代理服务器。我担心的是,我无法解决这个问题,因为我正在编写我的网站以安装在bluehost服务器上。基本上我有两个问题: 1.有没有办法使用html5 canvas方法创建文件上传类型发布请求到服务器? 2.有没有办法解决这个413错误并不涉及搞乱Apache / Nginx(或其他一些服务器)的配置?
答案 0 :(得分:3)
此错误是由太长的网址引起的。
虽然URL的长度没有官方限制,但实际上浏览器和服务器都有局限性。
The maximum safe length for browsers is about 2000 characters。这是旧版Internet Explorer的限制。我认为IE的最新版本允许大约4000,但Chrome限制在大约2000,even though Google generates URLs longer than that。
服务器The maximum length for servers varies。
因此,如果您的数据超过了该数据,您可能需要提供另一种发送方式,而不是将其转换为URL字符串。
答案 1 :(得分:2)
如果您尝试上传时出现413请求实体太大错误,则需要增加nginx.conf
或任何其他配置文件中的大小限制。在服务器部分中添加client_max_body_size xxM
,其中xx
是您要允许的大小(以兆字节为单位)。
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
client_max_body_size 20M;
listen 80;
server_name localhost;
# Main location
location / {
proxy_pass http://127.0.0.1:8000/;
}
}
}