.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?
很多黑客也想知道这一点。
我正在尝试构建一个 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?
很多黑客也想知道这一点。