加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 机架和rack.request.form_vars / rack.request

发布时间:2020-12-17 03:52:15 所属栏目:百科 来源:网络整理
导读:我正在做一些中间件,它会在它到达Rails之前更改authenticity_token参数. 我可以看到env.inspect同时提供了rack.request.form_vars和rack.request.form_hash.两者都包含真实性令牌. Rails使用哪一个,为什么Rack同时提供? 解决方法 让我们来看看源头!这两个
我正在做一些中间件,它会在它到达Rails之前更改authenticity_token参数.

我可以看到env.inspect同时提供了rack.request.form_vars和rack.request.form_hash.两者都包含真实性令牌. Rails使用哪一个,为什么Rack同时提供?

解决方法

让我们来看看源头!这两个变量来自使用 Rack::Request辅助类.它为请求参数提供了一个很好的接口. Rack应用程序不必使用它,但Rails确实使用它.

变量适用于Rack :: Request的内部使用. rack.request.form_vars包含未解析的POST主体,rack.request.form_hash包含已解析的哈希. ActionDispatch :: Request继承自Rack :: Request,它使用Rack :: Request#POST获取参数,后者读取后一个变量.您可以自己使用Rack :: Request来修改它.

class YourMiddleware
  def initialize(app)
    @app = app
  end 

  def call(env)
    req = Rack::Request.new(env)
    req.POST["authenticity_token"] = "foo"
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读