Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 413发送图像数据时请求实体太大_Html_Perl_Apache_Nginx - Fatal编程技术网

Html 413发送图像数据时请求实体太大

Html 413发送图像数据时请求实体太大,html,perl,apache,nginx,Html,Perl,Apache,Nginx,我的网站的一部分使用该方法从HTML5画布上获取图像 .toDataURL() 然后使用AJAX将原始数据作为POST消息的一部分发送到我的服务器。 在服务器端,我有一个cgi脚本,它需要长数据字符串。 我经常会遇到这样的错误: 413 (Request Entity Too Large) 我正在使用perl CGI库,但我没有 $CGI::POST_MAX 设置,或 $CGI::DISABLE_UPLOADS 设定。 这是由于服务器中设置的限制造成的吗?我使用apache

我的网站的一部分使用该方法从HTML5画布上获取图像

 .toDataURL()
然后使用AJAX将原始数据作为POST消息的一部分发送到我的服务器。 在服务器端,我有一个cgi脚本,它需要长数据字符串。 我经常会遇到这样的错误:

 413 (Request Entity Too Large) 
我正在使用perl CGI库,但我没有

 $CGI::POST_MAX 
设置,或

  $CGI::DISABLE_UPLOADS
设定。 这是由于服务器中设置的限制造成的吗?我使用apache和nginx作为代理服务器。我担心的是,我将无法回避这个问题,因为我正在编写我的站点以安装在bluehost服务器上。基本上我有两个问题: 1.有没有一种方法可以使用html5画布方法创建一个文件上传类型的post请求到服务器?
2.有没有办法绕过这个413错误而不影响Apache/Nginx(或其他一些服务器)的配置?

这个错误是由于URL太长造成的

虽然URL的长度没有官方限制,但实际上浏览器和服务器都有限制

。这是旧版本Internet Explorer的限制。我认为IE的最新版本允许4000个左右,但Chrome限制在2000个左右

通过服务器


因此,如果您的数据超过此值,您可能需要想出另一种发送方式,而不是将其转换为URL字符串。

如果您在尝试上载413请求实体时遇到过大错误,则需要增加
nginx.conf
或任何其他配置文件中的大小限制。在服务器部分中添加
client\u max\u body\u 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/;
        }
    }
}

首先确定是您的脚本还是服务器产生了错误。如果您没有设置
$CGI::POST_MAX
,则错误来自Apache或Nginx。身体有多大?如果在几兆字节以内,我会给提供商发电子邮件,要求他们将限制设置为合理的值。而且,由于您有两台服务器,请确定发送错误报告的是哪台服务器。检查错误日志。另外,请发布您的javascript发布代码。