django で REST API をセットアップし、CORS を有効にした JavaScript AJAX 経由で要求を行いました。PUT リクエストを使用しようとするまでは正常に動作します。django は PUT を処理できないため、django-piston のcoerce_put_postメソッドを使用しています。問題は、PUT リクエストは正常に処理されますが、OPTIONS リクエストは で失敗すること405 METHOD NOT ALLOWED
です。
これは、失敗した要求のネットワーク ログです。
- リクエスト URL :
http://localhost
- 依頼方法: OPTIONS
- ステータスコード: 405 メソッドは許可されていません
リクエスト ヘッダー
- 受け入れる: /
- Accept-Encoding : gzip、deflate、sdch
- Accept-Language : de,en-US;q=0.8,en;q=0.6
- Access-Control-Request-Headers : accept、origin、content-type
- Access-Control-Request-Method : PUT
- キャッシュ制御: キャッシュなし
- 接続:キープアライブ
- ホスト:フー
- 起源:
http://localhost
- プラグマ: no-cache
- リファラー:
http://localhost/bar
- ユーザーエージェント: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (Gecko のような KHTML) Chrome/28.0.1500.95 Safari/537.36
応答ヘッダー
- Access-Control-Allow-Credentials : true
- Access-Control-Allow-Headers : Content-Type、Pragma、Cache-Control
- Access-Control-Allow-Methods : POST、GET、OPTIONS、PUT、DELETE
- Access-Control-Allow-Origin :
http://localhost
- 許可: 投稿、取得、オプション、書き込み、削除
- コンテンツ タイプ: テキスト/html; 文字セット=utf-8
- 日付: 2013 年 8 月 9 日 (金) 09:39:41 GMT
- サーバー: WSGIServer/0.1 Python/2.7.4
ご覧のとおり、OPTIONS は CORS ヘッダーで実際に許可されています。
では、なぜそれはまだ失敗するのでしょうか?