使用原因
解决前端APP调用接口时的cors问题,否则在进行跨域调用时会报出406异常
例如,使用浏览器模拟手机进行接口调用时,可观察到浏览器console信息如下:
create_incident.html#:1 XMLHttpRequest cannot load http://localhost:3000/api/v1/app_versions/last?app_system=IOS. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:63343’ is therefore not allowed access.
解决方式
使用RACK中间件rack-cors,在response的header中,加入允许跨域的信息。rack-cors
安装gem
gem 'rack-cors', :require => 'rack/cors'
配置cors
在config/application.rb中,加入相关配置
# Avoid CORS issues when API is called from the frontend app.
# Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests.
# Read more: https://github.com/cyu/rack-cors
config.middleware.insert_before 0, "Rack::Cors" do
allow do
origins '*'
resource '/api/v1/*', :headers => :any, :methods => [:get, :post, :options]
end
end