Can't get rack-cors working in rails application
I ran into the same problem with heroku. I found this blog with the same rack-cors issue.
Just moved the use Rack::Cors
to config.ru
, redeployed to heroku and it works.
require ::File.expand_path('../config/environment', __FILE__)
run Rails.application
require 'rack/cors'
use Rack::Cors do
# allow all origins in development
allow do
origins '*'
resource '*',
:headers => :any,
:methods => [:get, :post, :delete, :put, :options]
end
end
There is a new issue thread for the heroku solution
Instead of using
config.middleware.use Rack::Cors do
try
config.middleware.insert_before ActionDispatch::Static, Rack::Cors do
That worked for me.
I had to create a special route to handle the options requests, the cors gem didn't do it for me like I expected it to. The route I added to the end of routes.rb was:
match "*path", :to => proc {|env| [200, {
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Credentials' => 'true',
'Access-Control-Request-Method' => '*',
'Access-Control-Allow-Headers' => 'Origin, X-Requested-With, Content-Type, Accept, Authorization',
'Content-Type' => 'text/plain'
}, ["CORS Preflight"]] }, :via => [:options]