Запретить приложению Rails отвечать на непреднамеренный запрос AJAX от jQuery

Я создал довольно сложное приложение Rails (2.3.8) с большим количеством запросов jQuery ajax. Иногда возникает ошибка, которую мне трудно воспроизвести, когда запрос jQuery $.ajax({..}) будет запрашивать страницу, которую он не должен (например, страница с тире, которая никогда не вызывается с запросом ajax). .

То, что гарантирует, — это абсолютное безумие. Случаются невероятно странные и ужасные ошибки.

По крайней мере, для временного решения (приложение находится в производстве), как я могу настроить предварительный фильтр, который обнаружит любой незапрашиваемый запрос xhr/ajax (или ЛЮБОЙ такой запрос на заданные действия контроллера) и убьет его до того, как он попадет в контроллер ?


person Michael Waxman    schedule 29.07.2010    source источник


Ответы (1)


В любом контроллере:

before_filter :stop_ajax, :only => [:dashboard]

application_controller.rb:

def stop_ajax
  if request.xhr?
    render :file => "#{Rails.root}/public/404.html", :status => 404
  end
end
person Leventix    schedule 29.07.2010
comment
Измените :dashboard на имя действия(ий), вызываемого вашим мошенническим AJAX, и сделайте метод stop_ajax закрытым в application_controller.rb - person bjg; 29.07.2010