.net core 在.NET核心Api上启用CORS?
我试图允许运行在.net core 在.NET核心Api上启用CORS?,.net-core,cors,.net Core,Cors,我试图允许运行在localhost:4200的ANgular应用程序能够从运行在localhost:44337的后端api.NET Core 2.2 api请求数据。我在ConfigureServices中添加了核心策略,将其添加到Configure,并在我的端点上添加了UseCors注释,但仍然出现以下错误: Access to XMLHttpRequest at 'https://localhost:44337/api/users/1' from origin 'http://localho
localhost:4200
的ANgular应用程序能够从运行在localhost:44337
的后端api.NET Core 2.2 api请求数据。我在ConfigureServices
中添加了核心策略,将其添加到Configure
,并在我的端点上添加了UseCors
注释,但仍然出现以下错误:
Access to XMLHttpRequest at 'https://localhost:44337/api/users/1' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Startup.cs
public string DefaultCorsPolicy = "DefaultCorsPolicy";
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(DefaultCorsPolicy,
builder =>
{
builder
.AllowAnyHeader()
.AllowAnyMethod()
.WithOrigins("http://localhost:4200/");
});
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors(DefaultCorsPolicy);
app.UseMvc();
}
UsersController.cs
[HttpGet("{id}")]
[EnableCors("DefaultCorsPolicy")]
public async Task<ActionResult> GetUser(int id)
{
var settings = await _service.GetUser(id);
return Ok(settings);
}
[HttpGet(“{id}”)]
[启用公司(“默认公司政策”)]
公共异步任务GetUser(int-id)
{
var settings=wait_service.GetUser(id);
返回Ok(设置);
}
如果我在实际的GetUser
方法中添加Response.Headers.add(“Access Control Allow Origin”、“*”)
,它将起作用。但我不想强逼它
我确保将
AddCors
和UseCors
调用分别放在ConfigureServices
和Configure
的开头。但它仍然不起作用 这就是我的情况(与您描述的相同)。
如果这有效,你可以开始变窄
services.AddCors(options =>
{
options.AddPolicy(DefaultCorsPolicy,
builder => builder
.SetIsOriginAllowed((host) => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
当然,我没有
[EnableCors(“DefaultCorsPolicy”)]
属性,因为我在所有方法上都允许它。它以什么方式“不起作用”?以下是MS文档:当angular应用程序调用用户
端点时,我希望接收使用数据-相反,我会在控制台中得到上面的错误。是的,成功了!看起来MS将AddCors的语法更改为2.2。算了吧,谢谢!