Удаленный заголовок в запросе от клиента к серверу - PullRequest
0 голосов
/ 21 мая 2019

Недавно я перенес свое простое приложение, состоящее из клиента angular 7 и ASP.NET Core Web API (.NET Core v2.2), в производственную среду, и я столкнулся со странной проблемой.Когда я попытался выполнить действие, которое должно выполнить пост-запрос с токеном аутентификации в заголовке, я получил ошибку 401 - Несанкционированный сервер.

Моя производственная среда - Ubuntu 18.04 с сервером Apache2 с прокси-сервером, настроенным на перенаправление с порта 80на порт 5000 (это место, где находится API).

В среде разработки все работало без ошибок, поэтому я предполагаю, что что-то происходит с передачей заголовка запроса от apache к kestrel.

Я попытался решить эту проблему в Google, и на веб-сайте Microsoft обнаружил, что мне нужно использовать метод перенаправленных заголовков в моем файле startup.cs, например:

app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }); app.UseAuthentication();

Я настроил свой класс запуска следующим образом:но безуспешно.Буду признателен за любую помощь или направление, где можно попытаться найти решение.Заранее большое спасибо.

1 Ответ

0 голосов
/ 21 мая 2019

попробуйте добавить связующее ПО для обычного заголовка.

namespace Middleware
{
public class CustomHeader
{
    private readonly RequestDelegate _next;

    public CustomHeader(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context,
    {

        var dictionary = new Dictionary<string, string[]>()
        {
            {
                "Access-Control-Allow-Headers",new string[]{ "authorization" }
            }
        };

        //To add Headers AFTER everything you need to do this
        context.Response.OnStarting(state => {
            var httpContext = (HttpContext)state;
            foreach (var item in dictionary)
            {
                httpContext.Response.Headers.Add(item.Key, item.Value);
            }
            return Task.FromResult(0);
        }, context);

        await _next(context);
    }
}
}
...