Asp.net core Blazor服务器端和Web组装中HttpClient的不同机制

Asp.net core Blazor服务器端和Web组装中HttpClient的不同机制,asp.net-core,blazor,Asp.net Core,Blazor,我想通过HttpClient工厂从ASP.net核心API获取数据。 我使用的Microsoft.Extensions.Http包如下所示: // Register service in IOC containter builder.Services.AddHttpClient<IProductService, ProductService>(option => { option.BaseAddress

我想通过HttpClient工厂从ASP.net核心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("");
//在IOC容器中注册服务
builder.Services.AddHttpClient(选项=>
{
option.BaseAddress=新Uri(“/*基本url*/);
});
//在役使用
var stream=await_httpClient.GetStreamAsync(“”);
当我在Blazor服务器端使用代码并正常工作时。但当我在Blazor中使用代码时,wasm抛出异常

CORS策略已阻止从源“blazor wasm应用程序url”获取“http客户端工厂基url”的访问:请求的资源上不存在“访问控制允许源”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源

ASP.net核心API没有变化,结果也不同。 我在所有应用程序中都使用.net core 3.1
谢谢

我像这样在API中激活CORS

// In ConfigureServices method
    options.AddPolicy("OpenCors", builder =>
                {
                    builder
                          .AllowAnyOrigin()
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                      ;
});

// In Configure method
app.UseCors("OpenCors");

                

我在API中激活CORS,如下所示

// In ConfigureServices method
    options.AddPolicy("OpenCors", builder =>
                {
                    builder
                          .AllowAnyOrigin()
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                      ;
});

// In Configure method
app.UseCors("OpenCors");

                

请仔细阅读CORS。看来你需要在Blazor wasm中启用CORS,检查和。机制并没有什么不同——你是在从不同的机器上打电话。使用Blazor服务器时,HTTP请求是从服务器发出的。使用Blazor WASM时,HTTP调用是从浏览器发出的。这与使用Javascript从浏览器中调用
fetch
没有什么不同。浏览器防止Javascript页面调用不相关的URL,以防止脚本注入。@brian parker link正在谈论飞行前的脉冲请在CORS上阅读。看来你需要在Blazor wasm中启用CORS,检查和。机制并没有什么不同——你是在从不同的机器上打电话。使用Blazor服务器时,HTTP请求是从服务器发出的。使用Blazor WASM时,HTTP调用是从浏览器发出的。这与使用Javascript从浏览器中调用
fetch
没有什么不同。浏览器防止Javascript页面调用不相关的URL,以防止脚本注入。@brian parker link正在谈论飞行前脉冲