Ruby on rails Rails 5 API+;反应+;CORS+;赫罗库+;GH页面
早上好 又有了一次令人头痛的时刻,可能需要帮助 我有一个React客户端使用Rails 5 API。在localhost上,一切都运行得很好,非常完美。我首先将客户端部署到GH pages,将API部署到Heroku,但无法向服务器发出post请求,我一直得到以下结果:Ruby on rails Rails 5 API+;反应+;CORS+;赫罗库+;GH页面,ruby-on-rails,reactjs,heroku,cors,Ruby On Rails,Reactjs,Heroku,Cors,早上好 又有了一次令人头痛的时刻,可能需要帮助 我有一个React客户端使用Rails 5 API。在localhost上,一切都运行得很好,非常完美。我首先将客户端部署到GH pages,将API部署到Heroku,但无法向服务器发出post请求,我一直得到以下结果: Access to XMLHttpRequest at 'https://xxxx.herokuapp.com/auth/login' from origin 'https://xxxx.github.io' has been
Access to XMLHttpRequest at 'https://xxxx.herokuapp.com/auth/login' from origin 'https://xxxx.github.io' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource
同样的请求在Postman中也可以正常工作,但现在它在localhost中也被破坏了,所以我什么也做不了:-(
问题显然是CORS-我尝试了多种配置,但似乎没有任何效果,因为我一直得到完全相同的错误
我有rack cors gem
。我的应用程序.rb
如下所示:
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => :any # also tried [:get, :post, etc]
end
end
奇怪的是,当我运行bundle exec-rake中间件时,我在列表顶部得到了2个use-Rack::Cors
——似乎无法找到原因
我已尝试在application\u controller.rb中手动设置标题:
after_filter :cors_set_access_control_headers
def cors_preflight_check
if request.method == 'OPTIONS'
cors_set_access_control_headers
render text: '', content_type: 'text/plain'
end
end
# protected
def cors_set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, PUT, DELETE, GET, PATCH, OPTIONS'
headers['Access-Control-Request-Method'] = '*'
headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Credentials'
end
我尝试了其他一些方法,但仍然得到了同样的错误。一些帮助将是很棒的,提前谢谢!修复了它-我不知何故错过了非常明显的cors.rb文件,该文件的来源设置错误您是否有机会查看过CSRF?Rails为所有表单添加了真实性标记,以验证e请求。您需要禁用对将通过应用程序外部请求访问的特定操作的检查:skip\u before\u操作:验证\u真实性\u令牌,:only=>[:update]
或您需要的其他操作在\u操作:验证\u请求之前,我已经得到了skip\u,仅:%i[登录注册]
在my users\u controller.rb中,并获得相同的结果