You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rack中间件中应检查HTTP_CE_IDEMPOTENCYKEY还是ce-idempotencykey?

Rails 7中Rack中间件获取幂等性请求头的正确方式
  • 明确结论:在Rack中间件的env哈希里,必须使用HTTP_CE_IDEMPOTENCYKEY来获取请求头ce-idempotencykey。
  • 背后的规则:Rack会对所有传入的HTTP请求头做标准化转换:
    • 把请求头名称的连字符-替换成下划线_
    • 全部转为大写
    • 前缀加上HTTP_(除了少数特殊头,比如Content-Type会同时存在CONTENT_TYPE和HTTP_CONTENT_TYPE,但自定义头统一遵循这个规则)
  • 示例代码:
class IdempotencyMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    # 正确提取ce-idempotencykey请求头
    idempotency_key = env['HTTP_CE_IDEMPOTENCYKEY']

    if idempotency_key.present?
      # 执行你的幂等性逻辑:比如查询缓存的响应、记录请求状态等
    end

    @app.call(env)
  end
end
  • 验证方法:如果不确定键名,可以在中间件里打印所有HTTP相关的env键,确认实际的键名:
puts env.keys.grep(/HTTP_/)

内容的提问来源于stack exchange,提问作者mr_muscle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:43:08