在rails应用程序上启用cors

时间:2015-09-18 16:39:32

标签: ruby-on-rails

在我的application_controller.rb上,我有以下代码

class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_filter :init_headers

def init_headers
    headers['Access-Control-Allow-Origin'] = '*'
    headers['Access-Control-Allow-Methods'] = 'POST, PUT, DELETE, GET, OPTIONS'
    headers['Access-Control-Request-Method'] = '*'
    headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
end
end

我也在使用镀铬插件Allow-Control-Allow-Origin 当我运行angularjs前端时,我收到以下错误。 XMLHttpRequest无法加载 Response for preflight has invalid HTTP status code 404

1 个答案:

答案 0 :(得分:3)

首先,我高度建议使用Rack-CORS gem

您可以从ApplicationController设置中运行规则,而不是乱用config

它从中间件处理CORS,因此您将能够按如下方式创建应用程序范围的规则:

#config/application.rb
...
config.middleware.insert_before 0, "Rack::Cors" do
   allow do
      origins '*'
      resource '*', :headers => :any, :methods => [:get, :post, :options]
   end
end
...

他们的文件非常好并且不言自明。

-

关于您的错误,404代码表明您正在尝试访问根本不存在的资源。 URL或路由都不会接收请求。