要解决“ASP.NET Core 6 MVC:仅在授权策略上进行 HttpPost 时出现跨域错误”的问题,可以按照以下步骤进行操作:
Startup.cs
文件中添加了跨域配置。在 ConfigureServices
方法中添加以下代码:services.AddCors(options =>
{
options.AddPolicy("AllowAllOrigins",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
Configure
方法中使用 UseCors
中间件来启用跨域支持:app.UseCors("AllowAllOrigins");
在需要进行跨域的控制器或方法上添加 [EnableCors("AllowAllOrigins")]
属性。
确保在进行 HttpPost
请求时,使用了正确的授权策略。在授权策略中添加以下代码:
options.AddPolicy("RequireAuthenticatedUser",
policy =>
{
policy.RequireAuthenticatedUser();
policy.Build();
});
[Authorize("RequireAuthenticatedUser")]
属性。以下是一个完整的示例代码:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace YourNamespace
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAllOrigins",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
services.AddControllers();
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAuthenticatedUser",
policy =>
{
policy.RequireAuthenticatedUser();
policy.Build();
});
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseCors("AllowAllOrigins");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
确保按照以上步骤进行操作,并根据具体情况进行相应的修改,以解决“仅在授权策略上进行 HttpPost 时出现跨域错误”的问题。