Rails - Как подделать PUT или DELETE запрос, используя XDomainRequest в IE - PullRequest
0 голосов
/ 18 декабря 2011

Как я могу подделать запрос PUT или DELETE, используя XDomainRequest в IE? Или мне нужно использовать транспорт iframe?

Я пытаюсь получить доступ к успокоительному API, который настроен для CORS. Это работает во всех других браузерах, но я не могу понять, как подделать действия PUT / DELETE в IE. С XDomainRequest, пользовательские заголовки не допускаются , поэтому я не могу добавить заголовок HTTP_X_HTTP_METHOD_OVERRIDE, который якобы говорит Rails распознавать параметр _method=put в данных json.

1 Ответ

1 голос
/ 19 декабря 2011

Лучшее решение, о котором я мог подумать, - это добавить два новых маршрута участников, сопоставленных с #update и #destroy:

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

который добавил эти маршруты, когда вы запускаете 'rake маршруты':

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

, которые выглядят так, как будто они перекрываются, и вы никогда не сможете добраться до сообщений # destroy.

...