Railsy odpowiadają 404 na żądanie opcji wstępnej weryfikacji CORS

Tworzę zestaw usług za pomocą Rails 4, które wykorzystuję w przeglądarce JavaScript. Cross-origin GETS działają poprawnie, ale moje POST zawodzą, sprawdzając opcje OPTION z inspekcją wstępną z błędem 404. Przynajmniej tak myślę. Oto błędy, które pojawiają się w konsoli. To jest Chrome 31.0.1650.63 na Macu.

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

Szukałem informacji o wysokim i niskim poziomie, aby uzyskać instrukcje dotyczące włączania CORS. Zwykle zaleca się umieszczenie czegoś takiego w kontrolerze aplikacji, co zrobiłem.

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

Następuje jakiś rodzaj trasy w route.rb, który przekieruje do tej akcji, gdy pojawi się żądanie OPTIONS.

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

Dyrektywa 'match' nie działa już w Rails 4, więc bawiłem się nią, próbując dopasować ją bezpośrednio do POSTS, tak jak poniżej:

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

Ale to nadal nie działa. Ponieważ żądania GET działają, zakładam, że brakuje mi właściwej trasy dla żądania OPCJE. Jednak wypróbowałem każdą trasę, o której mogę pomyśleć, i nic nie wydaje się, aby ta prośba przeszła.

Próbowałem także zainstalowaćcyu / rack-cors, a to daje ten sam rezultat.

Czy ktoś wie, co robię źle?

questionAnswers(7)

yourAnswerToTheQuestion