Rails 3 を使用した API サーバーに取り組んでいますが、これはこれまでのところ非常に便利ですが、常にエラーが発生しており、Apache セットアップまたは Rails アプリが原因であるかどうかはわかりません。
http://sample.domain/uri/idで XHR 経由で HTTP DELETE または PUT リクエストを実行しようとすると、curl または HTTP-Client.app Rails または Apache が 404 または 403 で応答します (クライアントによって異なります。 of cors)、Safari 開発者コンソールは次のように応答します。
XMLHttpRequest cannot load http://sample.domain/uri/id. Origin http://web.client/ is not allowed by Access-Control-Allow-Origin.
私は Apache2 で mod_rack 別名 mod_rails を使用していますが、私の仮想ホストには実際にこれが含まれています:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods POST,GET,DELETE,PUT,OPTIONS
Header set Access-Control-Allow-Headers X-Requested-With
Apache error_log は次のエラーで応答します。
[Sat Oct 30 01:37:34 2010] [error] [client 22.222.222.22] client denied by server configuration: /path/to/rails/folder/public, referer: http://web.client/
Rails development.log は次のように応答します
Started OPTIONS "/uri/id" for 84.190.123.140 at 2010-10-30 03:18:42 +0200
ActionController::RoutingError (No route matches "/uri/id"):
そして、ここで OPTIONS 呼び出しがなぜトラフになるのかわかりません。これはプリフライトにすぎないと思ったからです。DELETE に応答したいので、OPTIONS へのルートがないことは確かです。
この問題を解決する方法について何かアイデアがあれば、私と共有してください。
どうもありがとうデビッド