Rails - 如何在IE中使用XDomainRequest伪造PUT或DELETE请求

时间:2011-12-18 00:10:11

标签: ruby-on-rails internet-explorer cors xdomainrequest xdr

如何在IE中使用XDomainRequest伪造PUT或DELETE请求?或者我是否需要使用iframe传输?

我正在尝试访问为CORS设置的restful API。它适用于所有其他浏览器,但我无法弄清楚如何伪造IE中的PUT / DELETE操作。使用XDomainRequestcustom headers are not allowed,因此我无法添加HTTP_X_HTTP_METHOD_OVERRIDE标头,该标头可以告诉Rails识别json数据中的_method=put参数。

1 个答案:

答案 0 :(得分:1)

我能想到的最佳解决方案是添加两个映射到#update和#destroy的新成员路由:

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"}

看起来它们是重叠的,你永远无法发布帖子#troy。