rack-cors gem和设置Access-Control-Allow-Origin标头

时间:2014-09-08 13:33:27

标签: cors rack

使用rack-cors gem时,有没有办法设置“Access-Control-Allow-Origin”标头值?

我们正在使用rack-cors gem https://github.com/cyu/rack-cors来管理Grape app的CORS。

我想发送一个永久重定向并将它们从当前子域重定向到另一个子域。葡萄代码是:

redirect 'subdomain2.oursite.com, 'Access-Control-Allow-Origin' => '*',permanent: true 

但是这不会起作用,因为机架编号会使用当前请求进入的URL覆盖Access-Control-Allow-Origin标头值,这会导致CORS预检错误。

所以需要一种方法来设置值。

1 个答案:

答案 0 :(得分:1)

我的API遇到类似的问题,在这里偶然发现了这个问题。虽然没有提供有效的解决方案,但我设法找到了一个对我有用的解决方案。

class Api::BaseController < ActionController::API
  respond_to :json
  before_filter :set_cors_header
  after_filter :cors_set_access_control_headers

  def cors_set_access_control_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

  def set_cors_header
    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-Typee, Accept, Authorization'
  end
end