C# HttpClient добавление заголовка "User-Agent" отображается как несколько разных заголовков

при добавлении заголовка "User-Agent" в HttpClient вместо этого в запросе отображается несколько заголовков User-Agent. Похоже, что строка, добавленная как User-Agent, по умолчанию разбивается на пробел, а затем добавляется как отдельные пользовательские агенты. Как добавить одну строку User-Agent с пробелами, используя HttpClient?

var cookieContainer = new CookieContainer();
var handler = new HttpClientHandler();
handler.CookieContainer = cookieContainer;
var httpClient = new HttpClient(handler);
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");
//Did not work either, same result
//httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");
//httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");

enter image description here

enter image description here

1 ответов


- вы не должны беспокоиться об этом. Он разбивает ваш пользовательский агент на несколько частей внутри, потому что именно так определяется заголовок User-Agent в RFC:

поле User-Agent request-header содержит информацию о
агент пользователя, инициирующий запрос. Это для статистических целей, отслеживание нарушений протокола и автоматическое распознавание пользователя агенты ради пошива ответов, чтобы избежать конкретного пользователя
ограничения агента. Агенты пользователей должны включать это поле с
запросы. Поле может содержать несколько маркеров продукта (раздел 3.8) и комментарии, идентифицирующие агента и любые субпродукты, которые образуют
значительная часть пользовательского агента. По соглашению, маркеры продукта перечислены в порядке их значимости для определения
приложение.

User-Agent = "User-Agent"": "1*( продукт | комментарий )

Так что ты смотрите эти "маркеры продукта", и если вы исследуете каждый - вы увидите, что у них есть Product и Comment свойства.

, это значит не означает, что он отправит это как 6 заголовков. Он пошлет одного User-Agent заголовок, такой же, как вы предоставили в качестве строки.