0

JSONを返すRuby On Rails 3.0.xアプリケーションをビルドしました。これまでのところ、Advertisementsコントローラには、index、show、update、destroyという4つのメソッドしかありません。私のRails RESTful WebサービスでPUTメソッドとDELETEメソッドを受け入れる方法

私は同じドメイン内のアプリケーションから(AJAX & jQueryを通じて)メソッドを呼び出そうとすると成功します。しかし、私は別のドメイン内の別のアプリから同じことをしようとしたとき、私はメソッドを使用しようとする場合にのみ、私は、次のエラーメッセージが表示されますPUTとDELETE(それがGETとPOSTのために正常に動作します):

XMLHttpRequestがURL_HEREをロードできませんOrigin URL_HEREは Access-Control-Allow-Originによって許可されていません。

私のRESTfulサービスは、HTTPSではなくHTTP経由で呼び出されます。以下は

私が使用しているAJAXコード(16が広告のidである)である:

$.ajax({ 
    type: "DELETE", 
    url: "http://SERVICE_URL/advertisements/16.json", 
    crossDomain: true, 
    success: function(response){ 
      alert("test"); 

    } 
    }); 

任意のアイデア?

ありがとうございました。

答えて

2

お試しください。rack-corsour web serviceのCORSを有効にします:

# config/application.rb 
config.middleware.use Rack::Cors do |requests| 
    requests.allow do |allow| 
    allow.origins '*' 
    # perhaps you would stick :put and :delete here? 
    # then you should follow the rack-cors documentation to only enable it where necessary 
    allow.resource '*', :headers => :any, :methods => [:get, :post] 
    end 
end 
+0

私はこのソリューションを数日間探していますが、何も助けてくれませんでした。ありがとうございました! –

+0

@Seamus Abshereこんにちは、これらの動詞(PUTとDELETE)がデフォルトで保護されている理由を知りたいのですが。また、Postとgetメソッドが許可されている理由も知りたいですか? – loganathan

関連する問題