无法为 Spree API 设置 'Access-Control-Allow-Origin'

Unable to set 'Access-Control-Allow-Origin' for Spree API

每次我尝试为 Spree Commerce API 设置 'Access-Control-Allow-Origin' header 时,没有为 Ajax 调用传递 header .

我目前正在扩展 base_controller.rb:

文件:app/controllers/spree/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 时,都会将 header 添加到请求中。但是,在进行 AJAX 调用时没有 header 可见...

任何人都可以向我解释如何执行此操作吗?这个问题有解决方法吗?

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

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

config/application.rb 中配置 rack-cors 以接受来自任何来源的请求。它属于应用程序 class.

内的任何位置
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