Rails应用程序无法仅在chrome上验证CSRF令牌

Ric*_*nne 12 ruby-on-rails-5

我有一个在Docker容器中运行的Rails应用程序.我Devise用于验证和Rack::CorsCORS.

在我的机器上,一切都很好.部署后,我可以GET正确登录页面,但当我填写登录表单并提交时,Chrome会回复一个空白页面和422(不可处理实体)状态代码.Rails日志显示:

Can't verify CSRF token authenticity.
Completed 422 Unprocessable Entity in 2ms (ActiveRecord: 0.0ms)
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
Run Code Online (Sandbox Code Playgroud)

有趣的是,在Firefox上,一切运行顺利.

我已经尝试了所有关于Rails,CORS,CSRF的内容,但我无法找到解决方案.

我真的不知道这里有什么类型的信息,所以请随意在评论中询问详细信息,我将编辑问题.

Ric*_*nne 0

不管怎样,我回顾了我的代码,看看我是如何解决这个问题的。

我无法找到一个干净的解决方案,所以我通过禁用起源检查来解决这个问题:

# config/initializers/csrf_workaround.rb

Rails.application.config.action_controller.forgery_protection_origin_check = false
Run Code Online (Sandbox Code Playgroud)

当然,这会引入安全漏洞,因此如果您有更清晰的方法来使其工作和/或对上述问题有真正的解释,请务必发布您自己的答案。