【问题标题】:Remove the HTTP_ prefix in Rails headers删除 Rails 标头中的 HTTP_ 前缀
【发布时间】:2014-11-14 18:11:44
【问题描述】:

任何发送到 Rails 控制器的请求都会得到一个 HTTP_ 前缀,因为它是由 ActionDispatch::HTTP.Headers 附加的。有没有办法防止这种情况(不覆盖ActionDispatch::HTTP,这样我就可以按原样使用我的自定义标题并将它们用作headers.@env 的键?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 actiondispatch


    【解决方案1】:

    不,这是不可能的。这就是 ActionDispatch::Http::Headers 类被设计用来规范化标头的方式。

    private
    
    def env_name(key)
      key = key.to_s
      if key =~ HTTP_HEADER
        key = key.upcase.tr('-', '_')
        key = "HTTP_" + key unless CGI_VARIABLES.include?(key)
      end
      key
    end
    

    您仍然可以使用自定义标题。您只需将它们引用为HTTP_X_FOO 而不是x-foo

    【讨论】:

    • 是的,我已经看到它是如何设置 @env 的,它现在需要 HTTP_X_FOO 来获取该标头,并且我不得不在将其传递为时将其用作键一个哈希。目的是避免这样做。
    • 正如我所提到的,如果您使用的是 Rails 堆栈,这是不可能的。
    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多