微软官网:
https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-5.0
ASP.NET Core中间件顺序
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-5.0#middleware-order
.net版本.NET5
根据官网配置了跨域设置的app.UseCors(policy);没有实际作用,自己手动配置的中间件来设置响应头解决跨域问题,无需引用任何组件
主要作用语句
app.Use(async (context, next) =>
{
if (context.Request.Method == "OPTIONS")
{
//允许处理跨域
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
context.Response.Headers.Add("Access-Control-Allow-Headers", "*");
context.Response.Headers.Add("Access-Control-Allow-Methods", "*");
await context.Response.CompleteAsync();
}
else
{
//允许处理跨域
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
context.Response.Headers.Add("Access-Control-Allow-Headers", "*");
context.Response.Headers.Add("Access-Control-Allow-Methods", "*");
await next();
}
});
完整代码
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.Use(async (context, next) =>
{
if (context.Request.Method == "OPTIONS")
{
//允许处理跨域
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
context.Response.Headers.Add("Access-Control-Allow-Headers", "*");
context.Response.Headers.Add("Access-Control-Allow-Methods", "*");
await context.Response.CompleteAsync();
}
else
{
//允许处理跨域
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
context.Response.Headers.Add("Access-Control-Allow-Headers", "*");
context.Response.Headers.Add("Access-Control-Allow-Methods", "*");
await next();
}
});
//app.UseCors(policy);
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
//endpoints.MapControllers().RequireCors(policy);
//endpoints.MapControllerRoute(
// name: "default",
// pattern: "api/{controller=scale}/{action=Get}/{id?}");
});
}