2015-05-26 6 views
1

Как я могу применить этот фильтр для всех маршрутов приложения, когда я помещаю это только в файл application_controller, я все еще получаю ошибку CORS.Rails 4 enable cors на всех маршрутах

before_filter :cors_preflight_check 
    after_filter :cors_set_access_control_headers 


    def cors_set_access_control_headers 
    headers['Access-Control-Allow-Origin'] = '*' 
    headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' 
    headers['Access-Control-Max-Age'] = "1728000" 
    end 

    def cors_preflight_check 
    headers['Access-Control-Allow-Origin'] = '*' 
    headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' 
    headers['Access-Control-Allow-Headers'] = 'X-Requested-With, X-Prototype-Version' 
    headers['Access-Control-Max-Age'] = '1728000' 
    end 
+0

вы проверить заголовки в хроме/Firefox Dev инструменты? – zekus

+0

Возможно, для этого лучше использовать специальный камень: https://github.com/cyu/rack-cors –

ответ

0

У вас есть метод OPTIONS enabled для путей, которые вы хотите поддерживать CORS. Запросы CORS (т. Е. POST/PUT) используют запрос OPTIONS на том же пути. Я не думаю, что ваш контроллер будет выполнен, если нет соответствия маршрута.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

Как было предложено @ павел-tkackenko можно использовать https://github.com/cyu/rack-cors или создать свой собственный Middleware.

Соответствующие: Rails Responds with 404 on CORS Preflight Options Request

Смежные вопросы