Pro*_*kov 24 ruby rack ruby-on-rails cors
我想在我的rails应用程序中实现CORS,所以我用Google搜索了rack-cors gem.我按照README中的说法做了一切,相应地更新了Gemfile并更新application.rb如下:
module YourApp
class Application < Rails::Application
# ...
config.middleware.use Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
但它没有用.不管我做了什么,在浏览器控制台中我不断收到消息:
XMLHttpRequest cannot load https://somewebsite.com. Origin http://0.0.0.0:3000 is not allowed by Access-Control-Allow-Origin.
看完这个博客帖子和问题在github上,我意识到,机架CORS中间件在中间件堆栈事项可能位置.所以我按照github问题的说法做了:
module YourApp
class Application < Rails::Application
# ...
config.middleware.insert 0, Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
在那之后,当我运行rake middlewarerack-cors时,它确实处于堆栈的顶端.
但它仍然只是根本不起作用.我一直得到同样的错误.任何人,请帮忙.
dcu*_*001 19
我和heroku遇到了同样的问题.我发现这个博客有同样的机架问题.
刚搬进的use Rack::Cors到config.ru,重新部署到Heroku的和它的作品.
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
Run Code Online (Sandbox Code Playgroud)
小智 10
heroku解决方案有一个新的问题线程
而不是使用
config.middleware.use Rack::Cors do
Run Code Online (Sandbox Code Playgroud)
尝试
config.middleware.insert_before ActionDispatch::Static, Rack::Cors do
Run Code Online (Sandbox Code Playgroud)
这对我有用.