无法为 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
每次我尝试为 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