带有rails api 5的CORS

Posted

技术标签:

【中文标题】带有rails api 5的CORS【英文标题】:CORS with rails api 5 【发布时间】:2018-06-20 22:01:28 【问题描述】:

我正在尝试使用 jquery 发送一个 post 方法

  jQuery.ajax(
      headers:  'Authorization': "Token token=123546" ,
      url: "https://paycar-public-api.herokuapp.com/api/v1/users", 
      type: "POST",
      processData: false,
      contentType: 'application/json',
      data:  
          JSON.stringify(
          email: "mikew75+123@gmail.com",

        )
  );

我明白了

无法加载https://paycar-public-api.herokuapp.com/api/v1/users: 对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“https://app.instapage.com” 使用权。响应的 HTTP 状态代码为 500。

我的application.rb 看起来像这样:

class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.

# Only loads a smaller set of middleware suitable for API only apps.
# Middleware like session, flash, cookies can be added back manually.
# Skip views, helpers and assets when generating a new resource.
config.api_only = true

# CORS
config.middleware.insert_before 0, "Rack::Cors" do
      allow do
        origins '*'
        resource '*', :headers => :any, :methods => [:get, :post, :options]
      end
    end
end

API 由 heroku 托管

我不确定我是否理解它为什么不起作用,任何帮助将不胜感激。

【问题讨论】:

响应的 HTTP 状态码为 500——这就是你需要解决的问题。与您的 CORS 配置无关,正在发生一些内部服务器错误,您需要首先弄清楚并修复它。检查您的服务器日志。您在该浏览器消息中看到提及 Access-Control-Allow-Origin 的唯一原因是您在应用程序代码中设置的标头不会添加到 5xx 响应中。 【参考方案1】:

迈克,

查看此 gem,看看它是否可以帮助您解决问题:https://github.com/cyu/rack-cors

要详细了解为什么会发生这种情况,您可以查看之前回答的一些问题:

How does Access-Control-Allow-Origin header work?

【讨论】:

已安装。即使我启用了获取帖子和来自任何地方的选项,我也看不出它为什么拒绝我 看起来你想通了。我也遇到了 CORS 错误,rack-cors 配置让我绕过了它。【参考方案2】:

实际上,这是我的 rails 设置的一个简单错误。它处于暂存状态,配置有问题。

【讨论】:

以上是关于带有rails api 5的CORS的主要内容,如果未能解决你的问题,请参考以下文章

带有 Rails API 的 Django 应用程序

Rails 5,带有 Select2-rails 的简单表单

带有 master.key 的 Rails 5.2 - Heroku 部署

带有 Ruby 2.5.1 控制台的 Rails 5.2.0 - `warning:` `already` 已初始化常量 FileUtils::VERSION

Rails 5 API 不生成视图

如何将 Rails 5 API 应用程序转换为既可以作为 API 又可以作为应用程序的 Rails 应用程序?