Blazor oauth2 заблокирован cors - PullRequest
1 голос
/ 12 марта 2019

У меня на стороне сервера контроллер выглядит так:

 [HttpGet]
    public IActionResult Test(string returnUrl = "/")
    {
        return Challenge(new AuthenticationProperties() { RedirectUri = returnUrl });
    }

И когда я нажимаю кнопку на стороне клиента, я звоню:

await Http.GetAsync("/api/Login/Test");

Проблема в том, что я получаю ошибку cors в консоли, и ничего не происходит. Если я вставлю URL-адрес вручную в браузере (localhost / api / Login / test), он будет работать нормально.

Я добавил политику cors, которая выглядит следующим образом:

services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy",
                builder => builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());
        });

и

 app.UseCors("CorsPolicy");

Что не имеет значения.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Используйте это: await Http.GetJsonAsync<put here your return type>("/api/Login/Test");

Это подпись метода:

public static async Task<T> GetJsonAsync<T>(this HttpClient httpClient, string requestUri)

Примечание. Следует использовать методы, определенные в классе HttpClientJsonExtensions. Эти методы настроены для выполнения запросов Ajax к вашему веб-API с использованием веб-API JavaScript Fetch, и, что более важно, они знают базовый URI вашего приложения (<base href="/">)

См. https://github.com/aspnet/AspNetCore/blob/5a70f5312fb57fc3788e5af56a99e7b43761e195/src/Components/Components/src/HttpClientJsonExtensions.cs

Надеюсь, это поможет ...

0 голосов
/ 13 марта 2019

Решил с помощью

@inject Microsoft.AspNetCore.Components.Services.IUriHelper UriHelper

и

 UriHelper.NavigateTo("/api/Login/Test", forceLoad: true);
...