Клиентский Blazor, использующий SendAsync для GetRequest с CORS для запроса API - PullRequest
1 голос
/ 06 ноября 2019

Я столкнулся с некоторыми проблемами с CORS при настройке клиентского API клиента Blazor для выполнения запросов. Я думаю, что нашел решение для этого, но решение также выдает ошибки.

Основная ошибка: «WASM: System.Net.Http.HttpRequestException: TypeError: Не удалось выполнить« выборку »в« Окне »': Предоставленное значение' 2 'не является допустимым значением перечисления типа RequestCredentials. "

код

        string link = API_RequestLoginTokenEndPoint;

        Http.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
        Http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", "basic:testuser:testpassword");

        var requestMessage = new HttpRequestMessage(new HttpMethod("GET"), link);

        requestMessage.Properties[WebAssemblyHttpMessageHandler.FetchArgs] = new
        {
            credentials = FetchCredentialsOption.Include
        };

        var response = await Http.SendAsync(requestMessage);
        var responseStatusCode = response.StatusCode;
        var responseBody = await response.Content.ReadAsStringAsync();

        output = responseBody + " " + responseStatusCode;

Я также попытался изменить сообщение запроса на: var requestMessage = newHttpRequestMessage (HttpMethod.Get, ссылка);

В случае, если это был ENUM, на который ссылалась ошибка. В Startup ConfigureServices я попытался добавить: WebAssemblyHttpMessageHandler.DefaultCredentials = FetchCredentialsOption.Include;

Я использую предварительный просмотр Blazor 9. Я также попытался добавить некоторый код CORS в мой PHP-скрипт на маршруте API, который должен принимать все источники, но последний вопрос, который я написал, мне сказали использовать этот метод для решения проблемы с CORS, которая теперь дает мне новую ошибку.

Я что-то делаю неправильно или я что-то упускаю? Ошибка в браузере обычно указывает на строку с асинхронным запросом: var response = await Http.SendAsync (requestMessage);

1 Ответ

1 голос
/ 06 ноября 2019

Эта ошибка еще не исправлена. Используйте это вместо:

requestMessage.Properties[WebAssemblyHttpMessageHandler.FetchArgs] = new
        {
            credentials = "include"
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...