0

IE で XDomainRequest を使用して PUT または DELETE リクエストを偽装するにはどうすればよいですか? または、iframe トランスポートを使用する必要がありますか?

CORS 用にセットアップされた RESTful API にアクセスしようとしています。他のすべてのブラウザーで動作しますが、IE で PUT/DELETE アクションを偽装する方法がわかりません。ではXDomainRequestカスタムヘッダーは許可されていないため、RailsにjsonデータのパラメーターHTTP_X_HTTP_METHOD_OVERRIDEを認識するように指示すると思われるヘッダーを追加できません。_method=put

4

1 に答える 1

1

私が考えることができる最善の解決策は、#update と #destroy にマップされた 2 つの新しいメンバー ルートを追加することでした。

resources :posts do
    member do
        post :revise, :action => :update
        post :annihilate, :action => :destroy
    end
end

「rake routes」を実行すると、これらのルートが追加されます。

    revise_post POST   /posts/:id/revise(.:format)     {:action=>"update", :controller=>"posts"}
annihilate_post POST   /posts/:id/annihilate(.:format) {:action=>"destroy", :controller=>"posts"}

私が最初にこれを試したことに注意してください:

resources :posts do
    member do
        post :update
        post :destroy
    end
end

これらのルートが作成されることを期待しています:

 update_post POST   /posts/:id/update(.:format)  {:action=>"update", :controller=>"posts"}
destroy_post POST   /posts/:id/destroy(.:format) {:action=>"destroy", :controller=>"posts"}

しかし、代わりに作成しました:

POST   /posts/:id(.:format) {:action=>"update", :controller=>"posts"}
POST   /posts/:id(.:format) {:action=>"destroy", :controller=>"posts"}

それらが重なっているように見え、posts#destroy に到達できませんでした。

于 2011-12-19T19:31:08.887 に答える