Как отправить настраиваемое значение заголовка HTTP, которое включает конечные пробелы - PullRequest
0 голосов
/ 22 января 2019
POST /api/auth? HTTP/1.1
Host: example.com
My-Header-Value: 12345  // <= note that there's 2 trailing white spaces
cache-control: no-cache

Как видно из приведенного выше примера, в HTTP-запросе используется пользовательский заголовок My-Header-Value, в котором значение содержит некоторые конечные пробелы.

Я заметил, что конечные пробелы автоматически игнорируются, и полученное значение на самом деле составляет 12345 вместо 12345. Согласно спецификации, это предусмотрено дизайном.

Но что, если мне действительно нужно включить пробелы в этом случае? Есть ли способ, которым я могу это сделать?

1 Ответ

0 голосов
/ 06 марта 2019

Чтобы решить возникшую проблему, я создал следующий вспомогательный метод для кодирования base64 значения.Строка в кодировке base64 соответствует стандарту согласно RFC 2047 .

private static string GetBase64EncodedHeaderValue(string value)
{
    var result = string.Format("=?UTF-8?B?{0}?=", Convert.ToBase64String(Encoding.UTF8.GetBytes(value)));
    return result;
}

Тогда я могу сделать что-то вроде request.Headers["My-Header-Value"] = GetBase64EncodedHeaderValue("12345 ").Таким образом, пробелы будут сохранены в значении заголовка.

...