我需要在特定字符的情况下发送HTTP header 。我知道这违反了RFC,但是我有一个要求。http.get
似乎改变了我提供的 header 字典的大小写。如何保存字符大小写?
最佳答案
根据Tin Man的回答,即Net::HTTP
库正在您的自定义 header 键(和所有 header 键)上调用#downcase
,这里有一些其他选项不能完全修补整个Net::HTTP
。
您可以尝试以下方法:
custom_header_key = "X-miXEd-cASe"
def custom_header_key.downcase
self
end
为避免清除方法缓存,请将以上结果存储在类级常量中:
custom_header_key = "X-miXEd-cASe"
def custom_header_key.downcase
self
end
CUSTOM_HEADER_KEY = custom_header_key
或子类String重写该特定行为:
class StringWithIdentityDowncase < String
def downcase
self
end
end
custom_header_key = StringWithIdentityDowncase.new("X-miXEd-cASe")