【发布时间】:2021-02-26 21:24:02
【问题描述】:
我在 .NET Core 3.1 中有项目。在 React 中开发前端。我有一些小问题,静态文件(.doc,.pdf)保存在 wwwroot 文件夹中。但是当我从 UI 调用这个文件时,会出现 Cors 错误。 我们在 Startup.cs 中添加了 Cors 配置。每个想法都很好,但静态文件不起作用。请帮帮我
【问题讨论】:
标签: c# asp.net .net asp.net-core
我在 .NET Core 3.1 中有项目。在 React 中开发前端。我有一些小问题,静态文件(.doc,.pdf)保存在 wwwroot 文件夹中。但是当我从 UI 调用这个文件时,会出现 Cors 错误。 我们在 Startup.cs 中添加了 Cors 配置。每个想法都很好,但静态文件不起作用。请帮帮我
【问题讨论】:
标签: c# asp.net .net asp.net-core
如果您将静态文件功能与 IApplicationBuilder 扩展方法 UseStaticFiles() 一起使用,则不会应用 Cors。
您必须使用 OnPrepareResponse 来提供 CORS 标头并将 ICorsService 和 ICorsPolicyProvider 注入到 Statup Configure 方法中
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ICorsService corsService, ICorsPolicyProvider corsPolicyProvider)
{
// ...
app.UseStaticFiles(new StaticFileOptions
{
ServeUnknownFileTypes = true,
OnPrepareResponse = (ctx) =>
{
var policy = corsPolicyProvider.GetPolicyAsync(ctx.Context, "CorsPolicy")
.ConfigureAwait(false)
.GetAwaiter().GetResult();
var corsResult = corsService.EvaluatePolicy(ctx.Context, policy);
corsService.ApplyResult(corsResult, ctx.Context.Response);
}
});
// ...
}
【讨论】: