cors - rack-cors gem 和设置 Access-Control-Allow-Origin Header

标签 cors rack

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

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

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

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

但这不会起作用,因为 rack-cors 会用请求传入的当前 URL 覆盖 Access-Control-Allow-Origin header 值,这会导致 CORS 预检错误。

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

最佳答案

我的 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

关于cors - rack-cors gem 和设置 Access-Control-Allow-Origin Header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25725512/

相关文章:

javascript - 跨域 XHR 失败

ruby-on-rails - 如何创建 Rails 使用的 Rack 应用程序?

ruby-on-rails - 无效的请求参数 : invalid %-encoding when upload file to Rails api only server

javascript - 使用 Spring Boot 和 Zuul 进行 CORS 预检请求的 Host 与 Origin header

django - 在 django 上启用 CORS

javascript - HTTP 预检 (OPTIONS) 请求仅在 IE 中失败

spring-boot - 如何使用 graphql-kotlin 在 Spring Boot 服务器中添加 CORS header ?

ruby - Sinatra::Streaming with Rack 不分块响应

java - Rack 端口到 Java?

ruby - 如何在 Sinatra 中只解析一次 JSON 请求体并将其暴露给所有路由?