Заполнение заголовков HTTP-запросов пользовательским заголовком в промежуточном программном обеспечении .Net Core 3.0

#c# #.net #asp.net-core #.net-core

#c# #.net #asp.net-core #.net-core

Вопрос:

Возможно ли заполнить заголовки запросов пользовательскими заголовками в промежуточном программном обеспечении? Моя цель — вызывать внешний rest api, в котором реализована базовая аутентификация. Поэтому было бы неплохо сохранить секреты API во внутреннем коде.

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

Нет проблем с изменением заголовков ответов, может быть, есть такой способ с заголовками запросов?

Ответ №1:

Здесь есть разница между изменением запросов и ответов.

Поскольку вы вызываете rest API, вам нужно ввести IHttpClientFactory > Создать клиент > Добавить к нему заголовки аутентификации через appsettings.json (например)

или

Вы можете использовать Typed Clients , который можно настроить следующим образом:

 services.AddHttpClient<GithubClient>(c => { c.DefaultRequestHeaders.Add("Bearer", "token"); });
  

Вы можете добавить свои заголовки аутентификации из конфигурации выше, используя DefaultRequestHeaders свойство, затем внедрить HttpClient в вашу типизированную службу, которая будет отвечать за выполнение вызовов вашего rest api.

Все об этой теме доступно в документах. Смотрите здесь

Комментарии:

1. Привет, HMZ. Спасибо за ответ. Вызовы API будут выполняться с помощью AXIOS со стороны клиента. Как я вижу, без экземпляра HttpClient это невозможно…

2. @EduardSurovij Ну, это большая часть информации, которую следует исключить из вашего вопроса! Самый безопасный способ — сохранить токен в серверной части, а затем вызвать действие на вашем сервере, чтобы вызвать rest api, кроме этого, нет гарантии безопасности токена.