使用Grape API和Heroku的CORS问题

 阿宝宝86 发布于 2022-12-10 18:23

我有一个只读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

我怀疑这个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

Ryanzyy.. 5

每次发出请求时都会出现Access-Control-Allow-Origin错误.

这可能是因为您的服务器API没有响应带有CORS所需标头的OPTIONS请求.

如果您使用的是谷歌浏览器,则可以在开发控制台 - >网络选项卡中进行检查.

有趣的是,一些Javascript框架在将正常请求发送到服务器之前确实发出了OPTIONS请求.

解:

    修改你的Gemfile以包含'rack-cors'.

    运行捆绑安装

    修改你的config.ru:

*如果启动rails服务器时出错,请在"运行"后检查您的API命名空间

require 'rack/cors'

use Rack::Cors do
  allow do
    origins '*'
    resource '*', headers: :any, methods: [:get, :post, :options, :put]
  end
end

run API::V1::Base

现在您应该看到Grape使用CORS头处理所有OPTIONS请求.

1 个回答
  • 每次发出请求时都会出现Access-Control-Allow-Origin错误.

    这可能是因为您的服务器API没有响应带有CORS所需标头的OPTIONS请求.

    如果您使用的是谷歌浏览器,则可以在开发控制台 - >网络选项卡中进行检查.

    有趣的是,一些Javascript框架在将正常请求发送到服务器之前确实发出了OPTIONS请求.

    解:

      修改你的Gemfile以包含'rack-cors'.

      运行捆绑安装

      修改你的config.ru:

    *如果启动rails服务器时出错,请在"运行"后检查您的API命名空间

    require 'rack/cors'
    
    use Rack::Cors do
      allow do
        origins '*'
        resource '*', headers: :any, methods: [:get, :post, :options, :put]
      end
    end
    
    run API::V1::Base
    

    现在您应该看到Grape使用CORS头处理所有OPTIONS请求.

    2022-12-11 02:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有