小编Ste*_*hen的帖子

使用Grape API和Heroku的CORS问题

我有一个只读API,它在本地使用Vagrant设置很好.在我的Heroku应用程序上运行,由于CORS错误,每个API请求都被拒绝:"请求的资源上没有'Access-Control-Allow-Origin'标头.因此不允许原点'null'访问."

在我的API的基类中,我有以下设置标题:

module API
  class Base < Grape::API
    before do
      headers['Access-Control-Allow-Origin'] = '*'
      headers['Access-Control-Allow-Methods'] = 'GET, OPTIONS'
      headers['Access-Control-Request-Method'] = '*'
      headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
    end

    mount API::V1::Base   
  end
end
Run Code Online (Sandbox Code Playgroud)

我怀疑这个before调用没有被触发 - 如果我在其中使用puts语句,那么该语句不会出现在我的控制台中,其余的输出.

我很茫然.希望有人对此有一些经验.谢谢.

编辑:我也遵循了Grape的CORS指令,但得到了相同的结果.

成功.我使用了rack-cors gem和以下内容:

#application.rb
config.middleware.use Rack::Cors do
  allow do
    origins '*'

    # location of your API
    resource '/api/*', :headers => :any, :methods => [:get, :post, :options, :put]
  end
end
Run Code Online (Sandbox Code Playgroud)

api ruby-on-rails heroku cors

6
推荐指数
1
解决办法
1923
查看次数

标签 统计

api ×1

cors ×1

heroku ×1

ruby-on-rails ×1