как сохранить чувствительность к регистру ключей в заголовке запроса с помощью golang?

Недавно я использовал библиотеку golang «net/http», добавляя некоторую информацию заголовка для запроса, я обнаружил, что ключи заголовка меняются, например

request, _ := &http.NewRequest("GET", fakeurl, nil)
request.Header.Add("MyKey", "MyValue")
request.Header.Add("MYKEY2", "MyNewValue")
request.Header.Add("DONT-CHANGE-ME","No")

однако, когда я получаю пакет сообщений http, я обнаружил, что ключ заголовка изменился следующим образом:

Mykey: MyValue
Mykey2: MyNewValue
Dont-Change-Me:  No

Я использую golang 1.3, тогда как сохранить ключевой регистр чувствительным или сохранить его происхождение? спасибо.


person crafet    schedule 14.10.2014    source источник
comment
stackoverflow.com/questions/5258977/ - Каждое поле заголовка состоит из имени, за которым следует двоеточие (:) и значение поля. Имена полей нечувствительны к регистру.   -  person elithrar    schedule 14.10.2014


Ответы (1)


http://godoc.org/net/http#Header Add и Set канонизируют имя заголовка при добавлении значений в карту заголовков. Вы можете обойти канонизацию, добавив значения с помощью операций сопоставления:

request.Header["MyKey"] = []string{"MyValue"}
request.Header["MYKEY2"] = []string{"MyNewValue"}
request.Header["DONT-CHANGE-ME"] = []string{"No"}

Пока вы используете канонические имена для заголовков, известных транспорту, это должно работать.

person Cerise Limón    schedule 14.10.2014
comment
Теперь это работает для меня, спасибо. да, []string полезен, он такой же, как request.Add(key, value) для одного ключа с несколькими значениями. - person crafet; 14.10.2014