要解决ASP.NET Core的CORS(跨域资源共享)启用但不起作用的问题,可以按照以下步骤进行:
Startup.cs
文件中启用CORS中间件,并配置允许的域名和HTTP方法。以下是一个示例的ConfigureServices
和Configure
方法:// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("http://example.com")
.AllowAnyMethod()
.AllowAnyHeader());
});
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// 其他配置
app.UseCors("AllowSpecificOrigin");
app.UseMvc();
}
上述代码中,我们使用了AddCors
方法添加了一个名为"AllowSpecificOrigin"的CORS策略,并指定了允许的域名为"http://example.com",允许任何HTTP方法和任何请求头。
[EnableCors]
特性,以允许特定的控制器或操作启用CORS。以下是一个示例:[ApiController]
[Route("api/[controller]")]
[EnableCors("AllowSpecificOrigin")]
public class MyController : ControllerBase
{
// 控制器的代码
}
上述代码中,我们在MyController
类上使用了EnableCors
特性,并指定了之前定义的CORS策略"AllowSpecificOrigin"。
ConfigureServices
方法中添加以下行来配置CORS选项:services.Configure(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
上述代码中,我们使用Configure
方法将CorsAuthorizationFilterFactory
添加到全局的MVC过滤器中。
通过按照上述步骤进行配置,应该能够解决ASP.NET Core的CORS启用但不起作用的问题。如果仍然遇到问题,可以尝试查看控制台或浏览器的开发者工具中的错误信息,以便进一步调试。
上一篇:ASP.Net Core的cookie身份验证已登录但未经身份验证
下一篇:ASP.NET Core的CORS中间件在Access-Control-Allow-Headers中没有返回所有的头部信息。