【发布时间】:2021-02-08 10:03:58
【问题描述】:
我想使用 HttpClient Factory 从 ASP.net Core API 获取数据。 我像这样使用 Microsoft.Extensions.Http 包:
// Register service in IOC containter
builder.Services.AddHttpClient<IProductService, ProductService>(option =>
{
option.BaseAddress = new Uri(""/*Base url*/);
});
// Use in service
var stream = await _httpClient.GetStreamAsync("");
当我在 Blazor 服务器端使用代码并正常工作时。但是当我在 Blazor 中使用代码时会抛出异常
CORS 策略已阻止从源“blazor wasm app url”获取“http client factory base url”的访问权限:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
ASP.net 核心 API 没有变化,结果不同。 我在所有应用程序中使用 .net core 3.1 谢谢
【问题讨论】:
-
好像需要在Blazor wasm中开启CORS,检查Cross-origin resource sharing (CORS)和ASP.NET Core Blazor WebAssembly Cross-origin resource sharing。
-
机制没有什么不同——你是从不同的机器进行调用的。使用 Blazor Server 时,HTTP 请求是从服务器发出的。当您使用 Blazor WASM 时,HTTP 调用是从 浏览器 进行的。这与在 Javascript 中从浏览器发出
fetch调用没有什么不同。 浏览器阻止 Javascript 页面调用不相关的 URL,以防止脚本注入。 -
@brian-parker 链接正在谈论飞行前脉冲
标签: asp.net-core blazor