问题
config/application.rb
require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
module MyApp
class Application < Rails::Application
config.middleware.insert_before ActionDispatch::Static, Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options, :patch, :delete]
end
end
end
end
Gemfile
gem 'rack-cors', :require => 'rack-cors'
another gems…
bundle exec rake middleware
use Rack::Cors
another middleware…
This is an error shown console log
XMLHttpRequest cannot load https://example.com. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 405.
What should i do??
回答1:
Try to change your code into like this. I have tried in my rails 5 only add below lines will work. Then try to restart the server.
module YourApp
class Application < Rails::Application
# Rails 5
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
end
end
I hope it works.
来源:https://stackoverflow.com/questions/43647388/why-doesnt-work-rack-cors