关于c#:客户端Blazor使用SendAsync进行GetRequest并使用CORS进行API请求

Client-side Blazor using SendAsync for a GetRequest with CORS for an API request

设置Blazor客户端API客户端进行请求时,我遇到了CORS的一些问题。我想我找到了解决方案,但解决方案也引发了错误。

主要错误是:
" WASM:System.Net.Http.HttpRequestException:TypeError:无法在" Window"上执行" fetch":提供的值" 2"不是RequestCredentials类型的有效枚举值。"

代码是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        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 = new HttpRequestMessage(HttpMethod.Get,link);

如果这是ENUM,则表示错误。在启动ConfigureServices中,我尝试添加:
WebAssemblyHttpMessageHandler.DefaultCredentials = FetchCredentialsOption.Include;

我正在使用Blazor预览版9。我还尝试过在API路由上的PHP脚本中添加一些CORS代码,该代码应该接受所有起源。但是,我发布的最后一个问题却被告知要使用此方法来解决CORS问题,现在,这给了我一个新的错误。

我做错了什么还是错过了什么?浏览器中的错误通常指向异步请求所在的行:
var response =等待Http.SendAsync(requestMessage);


这是一个尚未修复的错误。改用它:

1
2
3
4
requestMessage.Properties[WebAssemblyHttpMessageHandler.FetchArgs] = new
        {
            credentials ="include"
        };


我遇到类似的问题,无法解决飞行前活动。

我可以通过注释掉HTTP重定向中间件来解决此问题。

上下文:Blazor客户端使用不同的URL调用asp.net.core api。

不确定这是否是一个好的解决方案,但我觉得我需要在此之后提一下
在这个令人沮丧的问题上花了1周的时间!希望它能对某人有所帮助。