无法为 Spree API 设置"访问控制-允许源"



每次我尝试为Spree Commerce API设置"Access-Control-Allow-Origin"标头时,都不会为Ajax调用传递任何标头。

我目前正在扩展base_controller.rb:

文件:app/controllers/spread/api/base_controller_decorator.rb

after_filter :set_access_control_headers
def set_access_control_headers
  headers['Access-Control-Allow-Origin'] = '*'
  headers['Access-Control-Request-Method'] = '*'
end

每次我直接从浏览器查看JSON时,都会将头添加到请求中。但是,在进行AJAX调用时没有可见的头。。。

有人能告诉我怎么做吗?有解决这个问题的方法吗?

您的应用程序控制器中不需要任何东西,而是需要一个gem:

gem 'rack-cors', :require => 'rack/cors'添加到Gemfile,然后添加bundle install

config/application.rb中,配置机架cors以接受来自任何来源的请求。它属于Application类中的任何位置。

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

origins '*'表示您允许来自任何域的请求。如果您想限制到特定的域(即在内部打开api,但对外部用户关闭),请将'*'更改为特定的域名。

参见https://github.com/cyu/rack-cors有关更多详细信息,

相关内容

最新更新