Blazor WASM 上的 HttpClient.SendAsync 返回空 HttpResponseMessage,尽管 Fiddler 显示已收到正确的响应

HttpClient.SendAsync on Blazor WASM returns empty HttpResponseMessage although Fiddler shows that correct response was received

提问人:Ozan Yasin Dogan 提问时间:8/25/2021 更新时间:8/28/2021 访问量:901

问:

我的 Blazor 页面代码:

private async Task OnSendSMSClick()
    {
        var request = new HttpRequestMessage(HttpMethod.Post, baseAddress);
        request.SetBrowserRequestMode(BrowserRequestMode.NoCors);
        request.SetBrowserRequestCache(BrowserRequestCache.NoCache);
        HttpContent content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("client_id", client_id),
                new KeyValuePair<string, string>("client_secret", client_secret)
            });
        content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
        request.Content = content;
        RequestOutput = request.ToString();

        HttpResponseMessage response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseContentRead);
        
        ResponseOutput = response.StatusCode.ToString();
    }

响应始终返回空,尽管我在 Fiddler 上看到返回了实际结果。在 Google Chrome 上,我看到服务器使用正确的标头响应了 200,但不知何故 Chrome 显示“无法加载响应数据”。

Fiddler SS

Chrome 上没有错误,我收到 200 响应,但它不知何故无法显示响应内容:

Chrome 200

Chrome fails to display response content

您可以在调试器中看到响应对象为空。

Empty response object

我怎样才能解决这个问题,我在这里缺少什么?

谢谢!

Blazor HttpClient WebAssembly httpResponseMessage SendaSync

评论


答:

2赞 Steve C 8/28/2021 #1

Blazor 在需要 CORS () 的站点上存在问题。

遗憾的是,在 Blazor 客户端上无法执行任何操作。
我找到的唯一解决方案是在服务器上禁用 CORS 或在 Blazor 外部设置代理服务器。