Как в Blazor считать headers из запроса?

Подскажите, пожалуйста, как на данной странице считать заголовки (headers) запроса? И есть ли такая функциональность в Blazor для считывания заголовков?

@page  "/"
@inject NavigationManager navigationManager;


<div class="section">
</div>

@code {

    private string sid;

    protected override async Task OnInitializedAsync()
    {
        getQueryStringValues();
    }

    private void getQueryStringValues()
    {
        navigationManager.TryGetQueryString("SID", out sid);
    }
}

Ответы (2 шт):

Автор решения: Russo

В настройках сервиса добавляем службу HttpContextAccessor:

builder.Services.AddHttpContextAccessor();

И затем вытаскиваем необходимый заголовок из запроса:

@inject IHttpContextAccessor httpContextAccessor;

@code {

    private string needParameter { get; set; }

    protected override async Task OnInitializedAsync()
    {
        needParameter = httpContextAccessor.HttpContext.Request.Headers["parameterName"];
    }
}
→ Ссылка
Автор решения: Russo

Оказалось, что такой способ не рекомендуется использовать, подробнее тут. Поэтому нашел другой способ. В _Host.cshtml файле необходимо передать параметр с данными, которые вам необходимы, в моем случае это Dictionary<string, string> хедеров:

<body>
    <app>
        <component type="typeof(App)" render-mode="Server" 
                   param-RequestData="@(new RequestData
                   {
                       Headers = Request.Headers.Select(t =>
                           new KeyValuePair<string, string>(t.Key, t.Value))
                           .ToDictionary(t => t.Key, t => t.Value)
                   })"/>
    </app>
</body>

После в App настроить передачу каскадного значение в App.razor:

<CascadingValue Value="RequestData">
    <Router AppAssembly="@typeof(App).Assembly">
        <Found Context="routeData">
            <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)"/>
        </Found>
        <NotFound>
            <NavigateToNotFound/>
        </NotFound>
    </Router>
</CascadingValue>

@code {
    [Parameter]
    public RequestData RequestData { get; set; }
}

А дальше используем каскадный параметр на любой странице, где он нужен:

@page "/some-url"

@code {

    [CascadingParameter]
    public RequestData Request { get; set; }
}

Модель RequestData:

public class RequestData
{
    public Dictionary<string, string> Headers { get; set; }
}
→ Ссылка