Rails 6,React,Rack-Cors [重复]

Posted

技术标签:

【中文标题】Rails 6,React,Rack-Cors [重复]【英文标题】:Rails 6, React, Rack-Cors [duplicate] 【发布时间】:2020-09-03 15:41:45 【问题描述】:

我有一个在 localhost:3001 上运行的 react 应用程序和一个在 localhost:3000 上运行的 rails 6 api 后端

当我从 react 到 rails 发布时,我不断收到 cors 错误。 rails 应用有 Rack Cors。

我已尝试将其添加到初始化程序文件夹中的 cors.rb 中。

Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource '*', headers: :any, methods: :any
  end
end

没用,我也尝试将它添加到application.rb和config.ru。注意有效,我很困惑。

【问题讨论】:

您的发帖请求是什么样的? 类似这样的 "auth": "email":"test@mail.com", "password":"test" 我也面临同样的问题。不幸的是,我目前没有解决方案,但似乎最新版本的 rack-cors gem 中可能存在一个错误,导致它拒绝 Rails 6 中的白名单域。this article 中提到了它,他们在那里建议将 rack-cors 固定到 ~> 0.4.1(这对我不起作用)。还有this issue,OP 表示它不适用于新的 Rails 6 项目,但在运行 rai 时有效 @PeterMcKinney 你找到解决办法了吗? 【参考方案1】:
allow do
 origins '*'
 resource '*', :headers => :any, :methods => :any
end

如果这不起作用,请尝试放置

origins 'localhost:3001'

希望对你有帮助

【讨论】:

不幸的是,不过,谢谢,这停止了所有方法。包括获取 然后尝试仅将 origins 'localhost:3001' 放入您的代码中 不,不走运。 Access to XMLHttpRequest at 'localhost:3000/user_token' from origin 'http://localhost:3001' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

以上是关于Rails 6,React,Rack-Cors [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Rails 服务器和 React 客户端:尽管来源相同,但 CORS 问题

[rack-cors gem更改接受标头从json到html

rails跨域请求配置

Rails 6 API + React + Google login:登录后如何授权用户访问某些服务器路由?

Rails 仅在生产时才在页面重新加载时丢失会话变量 current_user_id(React 16.13、Rails 6、Heroku)

Heroku、Rails 4 和 Rack::Cors