<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=KOI8-R" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
My mistake on that last message. I read the wrong headers info.<br>
It seems ngninx reports no Content-Length header was sent but according
to Firebug these are the headers - note it says Content Length is
present and chunked not mentioned...<br>
<br>
<table selected="true"
 class="netInfoHeadersText netInfoText netInfoHeadersTable"
 cellpadding="0" cellspacing="0">
  <tbody class="">
    <tr class="">
      <td class="netInfoParamName">Host</td>
      <td class="netInfoParamValue"><a class="moz-txt-link-abbreviated" href="http://www.xxxx.com">www.xxxx.com</a></td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">User-Agent</td>
      <td class="netInfoParamValue">Mozilla/5.0 (X11; U; Linux i686;
en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Accept</td>
      <td class="netInfoParamValue">text/javascript, text/html,
application/xml, text/xml, */*</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Accept-Language</td>
      <td class="netInfoParamValue">en-us,en;q=0.5</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Accept-Encoding</td>
      <td class="netInfoParamValue">gzip,deflate</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Accept-Charset</td>
      <td class="netInfoParamValue">ISO-8859-1,utf-8;q=0.7,*;q=0.7</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Keep-Alive</td>
      <td class="netInfoParamValue">300</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Connection</td>
      <td class="netInfoParamValue">keep-alive</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">X-Requested-With</td>
      <td class="netInfoParamValue">XMLHttpRequest</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Content-Type</td>
      <td class="netInfoParamValue">application/x-www-form-urlencoded;
charset=utf-8</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Referer</td>
      <td class="netInfoParamValue"><a class="moz-txt-link-freetext" href="http://www.xxxx.com/">http://www.xxxx.com/</a></td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Content-Length</td>
      <td class="netInfoParamValue">120</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Cookie</td>
      <td class="netInfoParamValue">XXXXXSession=3ce34bb3dbc257ff61405175f941f1d7</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Pragma</td>
      <td class="netInfoParamValue">no-cache</td>
    </tr>
    <tr class="">
      <td class="netInfoParamName">Cache-Control</td>
      <td class="netInfoParamValue">no-cache</td>
    </tr>
  </tbody>
</table>
<br>
<br>
<br>
Igor Sysoev wrote:
<blockquote cite="mid:20080817072406.GB8393@rambler-co.ru" type="cite">
  <pre wrap="">On Sun, Aug 17, 2008 at 02:14:18PM +0700, Chris Savery wrote:

  </pre>
  <blockquote type="cite">
    <pre wrap="">I've been getting this error a lot in my testing. I never received it 
with Apache. I understand what the message say but not why it's coming 
about. My headers being sent have length. Or is this message referring 
to content returned by PHP at the server end? I'm sure one of you 
experts here knows what's going on with this. I only get it on POST 
requests and not most of my ajax calls (which are GET).

Thanks for any help with tracking this down. I'm seeing it in Firebug 
and when it occurs I cannot see the real response content - even though 
content is indeed returned as well since it has effect on my javascript 
code and updates the screen. Weird.
Chris :)
    </pre>
  </blockquote>
  <pre wrap=""><!---->
Set error_log level to info:

error_log  /path/to/log info;

Then nginx will log a reason. Now there are 3 reasons:

"client sent invalid "Content-Length" header"
"client sent ... method without "Content-Length" header"
"client sent "Transfer-Encoding: chunked" header"

The last reason is nginx feature: it still does not support chunked body.

  </pre>
  <blockquote type="cite">
    <pre wrap="">Response from server:

&lt;html&gt;

&lt;head&gt;&lt;title&gt;411 Length Required&lt;/title&gt;&lt;/head&gt;

&lt;body bgcolor="white"&gt;

&lt;center&gt;&lt;h1&gt;411 Length Required&lt;/h1&gt;&lt;/center&gt;

&lt;hr&gt;&lt;center&gt;nginx/0.6.32&lt;/center&gt;

&lt;/body&gt;

&lt;/html&gt;

Header sent to server using ajax (only removed some identity info, HOST 
line):

User-Agent         Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) 
Gecko/2008072820 Firefox/3.0.1
Accept         text/javascript, text/html, application/xml, text/xml, */*
Accept-Language         en-us,en;q=0.5
Accept-Encoding         gzip,deflate
Accept-Charset         ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive         300
Connection         keep-alive
X-Requested-With         XMLHttpRequest
Content-Type         application/x-www-form-urlencoded; charset=utf-8
Referer         <a class="moz-txt-link-freetext" href="http://www.xxxxx.com/">http://www.xxxxx.com/</a>
Content-Length         269
Cookie         ZZZZSession=3ce34bb3dbc257ff61405175f941f1d7
Pragma         no-cache
Cache-Control         no-cache
    </pre>
  </blockquote>
  <pre wrap=""><!---->

  </pre>
</blockquote>
<br>
</body>
</html>