在iframe中投放时,Rails应用返回422响应无法验证CSRF令牌的真实性

问题描述

我在特定平台上的iFrame中服务特定的Rails应用程序(以嵌入网络游戏)。在某些情况/浏览器中,但不是全部,由于CSRF出现问题,无法提交表单。

我发现可以通过设置p3p标头来解决此问题,因此我在application_controller.rb中执行了以下操作,但没有结果:

before_action :set_p3p

private 
  
def set_p3p
  headers['P3P'] = 'CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV"'
end

日志中显示错误

W,[2020-09-02T10:28:03.574095 #21884]  WARN -- : [a12fc8c6-8d21-450e-9555-4673e8317662] Can't verify CSRF token authenticity.
I,[2020-09-02T10:28:03.575387 #21884]  INFO -- : [a12fc8c6-8d21-450e-9555-4673e8317662] Completed 422 Unprocessable Entity in 2ms (ActiveRecord: 0.0ms | Allocations: 888)
F,[2020-09-02T10:28:03.576961 #21884] FATAL -- : [a12fc8c6-8d21-450e-9555-4673e8317662]   
[a12fc8c6-8d21-450e-9555-4673e8317662] ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)