Asp. net основной прокси продолжает бросать 403 (asp. net ядро ​​3.1 + немного серверного блейзера) - PullRequest
0 голосов
/ 05 мая 2020

Я использую AspNetCore.Proxy для проксирования вызова ресурса stati c внешней службе. Я провожу предварительную обработку, чтобы проверить пользователя и создать URL-адрес внешней службы (которую я хочу скрыть от пользователя).

В моем Startup.Configure () у меня есть это:

app.UseProxies(builder =>
            {
                builder.Map("attached_resource/{id}", proxy =>
                {
                    proxy.UseHttp((context, arguments) =>
                    {
                        var scope = context.RequestServices
                            .GetRequiredService<IServiceScopeFactory>().CreateScope();
                        using (scope)
                        {
                            var attachedResourceService = scope.ServiceProvider.GetService<AttachedResourceService>();
                            var providerContext = scope.ServiceProvider.GetService<ContentProviderContext>();
                            var resourceId = int.Parse(arguments["id"].ToString());
                            var sourceUrl = attachedResourceService.GetProviderResourceUrl(resourceId, providerContext.User.Id);
                            context.Request.Method = "POST";
                            context.Request.Headers.Add("auth", providerContext.User.Token);
                            return sourceUrl.Url;              
                        }
                    });
                });
            });

Странная вещь; это работает, но только при вызове из почтальона, непосредственно из адресной строки в браузере или со страницы c HTML. НО ... он возвращает 403 каждый раз, когда я делаю запрос ресурса из своего собственного приложения, например, из представления или шаблона.

Итак, когда я добавляю тег img в stati c local plain HTML страница работает:

<img src="https://localhost:5001/attached_resource/104" />

Когда я помещаю ТОЧНЫЙ тот же тег img в представление или макет .cs html, консоль chrome (и asp. net основной терминал приложения) показывает возврат 403.

Использование asp. net core 3.1 с несколькими компонентами Blazor, отображаемыми на стороне сервера. Итак, простое приложение MVC, а не полноценное приложение Blazor.

Мне, должно быть, не хватает чего-то очень очевидного. Любые идеи? Спасибо, что подумали вместе со мной.

...