Rails отвечает 404 на запрос опций CORS Preflight

Я создаю набор сервисов с использованием Rails 4, который я использую в браузерном приложении JavaScript. GETS из разных источников работают нормально, но мои сообщения POST не проходят предварительную проверку OPTIONS с ошибкой 404. По крайней мере, я так думаюс чемпроисходит Вот ошибки, как они появляются в консоли. Это Chrome 31.0.1650.63 на Mac.I '

OPTIONS http://localhost:3000/confessor_requests 404 (Not Found) jquery-1.10.2.js:8706
OPTIONS http://localhost:3000/confessor_requests No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. jquery-1.10.2.js:8706
XMLHttpRequest cannot load http://localhost:3000/confessor_requests. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. main.html:1

я искал инструкции по включению 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, PUT, GET, OPTIONS'
  headers['Access-Control-Allow-Headers'] = '*'
  headers['Access-Control-Max-Age'] = "1728000"
end

def cors_preflight_check
  if request.method == :options
    headers['Access-Control-Allow-Origin'] = '*'
    headers['Access-Control-Allow-Methods'] = 'POST, PUT, GET, OPTIONS'
    headers['Access-Control-Allow-Headers'] = '*'
    headers['Access-Control-Max-Age'] = '1728000'
    render :text => '', :content_type => 'text/plain'
  end
end

За ним следует какой-то маршрут в route.rb, который будет перенаправлять на это действие при поступлении запроса OPTIONS.

match "/*all" => "application#cors_preflight_check", :constraints => { :method => "OPTIONS" }

'матч' Директива больше не работает в Rails 4, поэтому я возился с ней, пытаясь заставить ее соответствовать POSTS напрямую, например так:

post "/*all" => "application#cors_preflight_check", :constraints => { :method => :options }

Но это все еще нет работа. Так как запросы GET работают, яЯ предполагаю, что яm отсутствует - правильный маршрут для запроса OPTIONS. Однако я'Я перепробовал все возможные пути, и, кажется, ничто не пропустило запрос.

Я также пытался установитьcyu стойка / CORSи это дает тот же результат.

Кто-нибудь знает, что яя делаю неправильно?

Ответы на вопрос(7)

Ваш ответ на вопрос