2009-05-18 613 views
4

有时,我们的Web应用程序的用户会遇到以下错误消息:故障排除“请求实体过大”(HTTP 413)错误信息返回给浏览器

Request Entity Too Large 
The requested resource 
/ourapp/ourlocation/ 
does not allow request data with GET requests, or the amount of data provided in the request exceeds the capacity limit. 

我们检查了日志,但我们无法找到任何似乎与上述错误相关的条目。在做了一些研究后,我认为问题在于某些代理服务器的请求的某些方面太大,并且代理正在向用户的Web浏览器返回413错误。 (但这只是一个猜测。)

你有什么想法找出是什么原因导致这个错误?到目前为止,我已使用Charles Web Debugging ProxyLiveHTTPHeaders来尝试和观察每个请求对给定页面使用的字节数。

下面是一些可能有助于我排除故障的其他问题。

  1. 什么是允许的最大Cookie大小? 4096字节?
  2. GET请求的哪些部分会计入错误消息中引用的容量限制?
  3. 什么是GET请求的最大大小?

回答

3

如果它是一个代理服务器返回错误,那么我希望有另一个响应头,其中有代理的名称在那里。也许是“X-Via”或“Server”头?

你的问题... 1 & 3取决于代理服务器。 2:我会想象请求中的每个字节都会计入极限。

为了测试这个,我会创建一个控制台应用程序,它会继续发送更大的“GET”请求,直到它收到413回来。然后你可以让这些用户之一运行它并查看它是否可重现。

3

对于作为反向代理的nginx我不得不补充:


proxy_set_header Destination $dest; 
    client_max_body_size  1000m; #100m shoul'd do fine too 
    client_body_buffer_size 128k; 

    proxy_connect_timeout  90; 
    proxy_send_timeout   90; 
    proxy_read_timeout   90; 

    proxy_buffer_size   4k; 
    proxy_buffers    4 32k; 
    proxy_busy_buffers_size 64k; 
    proxy_temp_file_write_size 64k; 
相关问题