我有一个在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的内容,但我无法找到解决方案.
我真的不知道这里有什么类型的信息,所以请随意在评论中询问详细信息,我将编辑问题.
不管怎样,我回顾了我的代码,看看我是如何解决这个问题的。
我无法找到一个干净的解决方案,所以我通过禁用起源检查来解决这个问题:
# config/initializers/csrf_workaround.rb
Rails.application.config.action_controller.forgery_protection_origin_check = false
Run Code Online (Sandbox Code Playgroud)
当然,这会引入安全漏洞,因此如果您有更清晰的方法来使其工作和/或对上述问题有真正的解释,请务必发布您自己的答案。
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |