我正在使用Rails 3的API服務器至今非常方便,但我運行一個錯誤所有時間,我不確定這是因爲我的Apache安裝程序或Rails應用程序。XHR不起作用,因爲「起源是不允許的訪問控制允許起源」
當我嘗試通過XHR在http://sample.domain/uri/id上執行HTTP DELETE或PUT請求時,curl或HTTP-Client.app Rails或Apache響應404或403(取決於客戶端,我認爲是因爲cors)和Safari開發者控制檯與
XMLHttpRequest cannot load http://sample.domain/uri/id. Origin http://web.client/ is not allowed by Access-Control-Allow-Origin.
響應我使用mod_rack又名上的Apache2 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
阿帕奇的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調用響應來低谷,因爲我認爲這隻會是預檢和肯定沒有用於OPTIONS沒有路由因爲我想回復DELETE
如果您對如何解決此問題有任何想法,請與我分享。
非常感謝大衛大衛
我不確定我是否完全理解您的問題,但它聽起來有點類似於傳說中的可疑[同源策略](http://en.wikipedia.org/wiki/Same_origin_policy)。 – 2010-10-30 01:27:20
您是否驗證過直選'OPTIONS'?例如,使用'curl -X OPTIONS http:// localhost/uri/id'? – 2010-10-30 01:32:20
我或多或少地確定這是因爲sop,但我認爲我會使用我的標題設置來修復它。我不確定使用OPTIONS,因爲Rails應該只響應DELETE/PUT,因爲我認爲OPTIONS請求只是'預檢' – Phil 2010-10-30 01:41:59