.Net 6 - 用于 blazor 的 UseCors

.Net 6 - UseCors for blazor

我正在尝试构建一个 blazor 应用程序,它需要从客户端获取一些 json 但是在我无法转换为 https 的 http 源上,当然我在 [=25= 上有 cors 问题].

      Unhandled exception rendering component: TypeError: Failed to fetch
System.Net.Http.HttpRequestException: TypeError: Failed to fetch
 ---> System.Runtime.InteropServices.JavaScript.JSException: TypeError: Failed to fetch
   at System.Net.Http.BrowserHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.BrowserHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.GetStringAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
   at CncGenerator.MachineDashboard.MachineDashboardController.GetStatusAsync() in C:\Projects\CncGeneratorV4\CncGenerator\CncGenerator\MachineDashboard\MachineDashboardController.cs:line 26
   at CncGenerator.Shared.MachineDashboard.OnInitializedAsync() in c:\Projects\CncGeneratorV4\CncGenerator\CncGenerator\Shared\MachineDashboard.razor:line 24
   at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)

所以我找到了一些解释如何通过添加

来设置这些 Cors 的帖子
builder.Services.AddCors(options =>
{
    options.AddPolicy("CorsAllowAll",
        builder =>
        {
            builder.AllowAnyMethod()
                .AllowAnyOrigin()
                .AllowAnyHeader()
                .SetIsOriginAllowed(origin => true)
                .WithMethods("GET, PATCH, DELETE, PUT, POST, OPTIONS");
        });
});

如果我理解正确的话我应该这样做

var app = builder.Build();
app.UseCors("CorsAllowAll");
await app.RunAsync();

但我对使用 .net 6 的新方法有点迷茫,因为应用程序 return 是一个 WebAssemblyHost 而不是预期能够使用扩展方法 UseCors 的 IApplicationBuilder。

我该如何解决?

此致,

I need to do a GET on a json that is hosted in a service that I didn't control

如果该服务器未配置为允许 CORS 请求,那么就使用 SPA 客户端而言,你就不走运了。

您可以从您自己的服务器调用该服务。所以做一个直通端点。

How do I say to chrome then to bypass his default securities?

很多黑客也想知道这一点。