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周的时间!希望它能对某人有所帮助。