content-lengthを指定せずにPUTを実行しようとすると、nginxから411ステータスが返されます。これを無効にする方法はありますか?
content-lengthを指定せずにPUTを実行しようとすると、nginxから411ステータスが返されます。これを無効にする方法はありますか?
回答:
これをクエリに追加してみてください:
curl -i -X PUT -H 'Content-Length:0' ' http://www.example.com/test '
HttpChunkinModuleをインストールするか、Nginxを1.3.9+に更新してみてください
このモジュールは、Nginx 1.3.9以降では不要になりました。1.3.9以降、Nginxコアにはチャンク化されたリクエスト本文のサポートが既に組み込まれているためです。
PUT要求にはContent-Lengthが必要です。Nginxではなく、この要件を作っているのはHTTPです。PUTリクエストは、POSTリクエストのように、必ずコンテンツ本文を持っています。そのボディは長さゼロでも構いませんが、その場合は明示的に言わなければなりません。サーバーは接続が閉じられる前にリクエストに応答できる必要があるため、接続が閉じられるまでコンテンツが継続すると仮定することはできません(これは、content-lengthヘッダーがないことを意味します)。
古い質問ですが、私がウェブ検索からこれにつまずいたので:
NginX 1.3.9以降では、POSTおよびPUTで「Transfer-Encoding:chunked」をそのまま使用できます。
チャンク転送では、コンテンツの長さを最初に設定せずにファイルを送信できます。