我正在尝试在我的ASP上启用跨起源资源共享。NET核心Web API,但我卡住了。
EnableCors属性接受字符串类型的policyName作为参数:
// Summary:
// Creates a new instance of the Microsoft.AspNetCore.Cors.Core.EnableCorsAttribute.
//
// Parameters:
// policyName:
// The name of the policy to be applied.
public EnableCorsAttribute(string policyName);
policyName是什么意思,如何在ASP上配置CORS。NET核心Web API?
对于“c# - ASP Net Core Web API (Net Core 3.1 LTS)”,它为我工作…
在Startup.cs文件:
在“ConfigureServices”函数中添加以下代码:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
注意:在“CorsPolicy”的情况下,你可以改变你喜欢的或在“Startup”类中使用全局变量。
在“Configure”函数中添加以下代码:
app.UseCors("CorsPolicy");
检查函数的调用顺序,它应该是这样的:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("CorsPolicy");
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
最后,在你的控制器类中,将下面的代码添加到你的函数之上:
[EnableCors("CorsPolicy")]
例如:
[EnableCors("CorsPolicy")]
[HttpPost("UserLoginWithGoogle")]
public async Task<ActionResult<Result>> UserLoginWithGoogle([FromBody] TokenUser tokenUser)
{
Result result = await usersGoogleHW.UserLoginWithGoogle(tokenUser.Token);
return new JsonResult(result);
}
注意:“CorsPolicy”必须在启动和控制器中匹配。
祝你好运……
这涵盖每个端点。如果你想阻止某个端点,使用这个注释[DisableCors]
这里描述得很好。
https://learn.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-5.0
在app.authentication()和app.routing()之间添加app.usecors(policyName)在Configure方法中。
在configureService方法中
services.AddCors(options => options.AddPolicy(name: mypolicy, builder => { builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin(); }));
在每个控制器中添加[EnableCors("mypolicy")]
[EnableCors("mypolicy")]
[Route("api/[controller]")] [ApiController]
public class MyController : ControllerBase
eg:-
namespace CompanyApi2
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this //method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
options.AddPolicy(name: mypolicy,
builder =>
{
builder.AllowAnyHeader().AllowAnyMethod()
.AllowAnyOrigin();
})); //add this
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddScoped<IDatarepository, DatabaseRepository>();
}
public string mypolicy = "mypolicy";
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseCors(mypolicy); //add this
app.UseHttpsRedirection();
app.UseMvc();
}
}
}
对于“c# - ASP Net Core Web API (Net Core 3.1 LTS)”,它为我工作…
在Startup.cs文件:
在“ConfigureServices”函数中添加以下代码:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
注意:在“CorsPolicy”的情况下,你可以改变你喜欢的或在“Startup”类中使用全局变量。
在“Configure”函数中添加以下代码:
app.UseCors("CorsPolicy");
检查函数的调用顺序,它应该是这样的:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("CorsPolicy");
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
最后,在你的控制器类中,将下面的代码添加到你的函数之上:
[EnableCors("CorsPolicy")]
例如:
[EnableCors("CorsPolicy")]
[HttpPost("UserLoginWithGoogle")]
public async Task<ActionResult<Result>> UserLoginWithGoogle([FromBody] TokenUser tokenUser)
{
Result result = await usersGoogleHW.UserLoginWithGoogle(tokenUser.Token);
return new JsonResult(result);
}
注意:“CorsPolicy”必须在启动和控制器中匹配。
祝你好运……