2

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

 .toDataURL()

然后使用 AJAX 将原始数据作为 POST 消息的一部分发送到我的服务器。在服务器端,我有一个需要长数据字符串的 cgi 脚本。我一直收到此错误:

 413 (Request Entity Too Large) 

我正在使用 perl CGI 库,但我没有

 $CGI::POST_MAX 

设置,或

  $CGI::DISABLE_UPLOADS

放。这是由于服务器中设置的限制吗?我正在使用 apache 和 nginx 作为代理服务器。我担心我无法解决这个问题,因为我正在编写要安装在 bluehost 服务器上的站点。基本上我有两个问题: 1. 有没有办法使用 html5 画布方法来创建对服务器的文件上传类型的发布请求?2. 有什么方法可以解决这个 413 错误而不涉及弄乱 Apache/Nginx(或其他一些服务器)配置?

4

2 回答 2

3

如果您在尝试上传时遇到 413 Request Entity Too Large 错误,您需要增加nginx.conf或任何其他配置文件的大小限制。client_max_body_size xxM在 server 部分添加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/;
        }
    }
}
于 2014-05-14T08:35:19.723 回答
2

此错误是由 URL 过长引起的。

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

浏览器的最大安全长度约为 2000 个字符。这是旧版本 Internet Explorer 的限制。我认为最新版本的 IE 允许大约 4000,但 Chrome 限制在大约 2000,即使 Google 生成的 URL 比这更长

服务器的最大长度因服务器而异

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

于 2013-04-19T05:36:45.850 回答