tl; dr:DotCloudで実行されているnginxからの「411Lengthrequired」エラーを回避するにはどうすればよいですか?
DotCloudプラットフォームにPythonサービスとしてデプロイされたCORSサポート付きのAPIがあります。私のjavascriptクライアントがそれにアクセスしようとすると、ブラウザはOPTIONSリクエストで起動しますが、411に戻ります。
DotCloudのnginxは、本文が空のHTTPリクエストを好まないようです。「Content-Length:0」ヘッダーを追加するか、chunkin
モジュールを使用しようとする提案を見てきましたが、どちらも実行できません。
- ブラウザがOPTIONSリクエストに追加するHTTPリクエストヘッダーを制御していません
- DotCloudにサードパーティのnginxモジュールをインストールできないと思います。できたとしても、リクエストに「Transfer-encoding:chunked」ヘッダーがないため、これは役に立たない可能性があります
この問題を回避する方法はありますか?
アップデート:
以下を入れるとnginx.conf
、私の当面の問題は解決します。チャンキンと同様に、リクエストメソッドが。の場合、411エラーをトラップし、既定の応答を返しますOPTIONS
。このリポジトリで出くわしました。
error_page 411 = @cors;
location @cors {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'Content-Type, Authorization, ...';
add_header Access-Control-Max-Age '1800';
add_header Content-Length 0;
add_header Content-Type text/plain;
return 200;
}
return 411;
}
これらの応答をnginx構成ではなくPythonコードで処理したいので、理想的ではありません。また、DELETEリクエストとHEADリクエストには、今後問題が発生することが予想されます。これらにもリクエスト本文はありません。