#blazor-client-side
#blazor-на стороне клиента
Вопрос:
Я создаю приложение Blazor Webassembly, которое вызывает мой Dotnet web API. Я использую внедренный http-клиент, и сам вызов api выполняется без проблем, Postmann amp; WireShark подтверждает, что мои пользовательские заголовки ответов из API возвращаются правильно. Но в приложении Blazor Webassembly есть только один заголовок «content-type». Я знаю, что Http-клиент Blazor — это оболочка для некоторого Javascript, но есть ли кто-нибудь, кто может помочь с некоторыми знаниями или примерами о том, как получить пользовательские заголовки ответов через приложение Blazor. Я использую Visual Studio 2019 Community, а также Visual Studio Code, и обычно я разрабатываю на Mac, но из-за проблем с отладкой приложений Blazor на Mac я перешел на Windows 10.
Ответ №1:
На самом деле это было очень просто. Чтобы мои пользовательские заголовки ответов были доступны в приложении Blazor Webassembly в серверном API, просто добавьте к ответу заголовок ниже:
HttpContext.Response.Headers.Add(«Access-Control-Expose-Headers»,»YourCustomHeader,YourOtherCustomHeader»);
Комментарии:
1. У меня сработало! Очевидно, удалите лишний пробел между ‘Add(«Access-‘ выше.
Ответ №2:
Как упоминал @Ja&driver, добавление:
HttpContext.Response.Headers.Add("Access-Control-Expose-Headers", "my-header");
добавит дополнительный заголовок к ответу, чтобы указать, какие заголовки могут быть обработаны, в дополнение к безопасным заголовкам.
О .NET
, заголовки могут быть извлечены в выделенное свойство ответа:
HttpClient http = new();
HttpResponseMessa&e response = await http.GetAsync("https://...");
strin& MyHeader = "my-header";
KeyValuePair<strin&, HeaderStrin&Values&&t; nvHeaders =
response.Headers.NonValidated
.Where(v =&&t; v.Key == MyHeader)
.FirstOrDefault();
// KeyValuePair is a struct, default value is a KeyValuePair where the Key is null.
if (!strin&.IsNullOrEmpty(nv.Key))
{
strin& MyHeaderValue = nv.Value.FirstOrDefault();
}