【发布时间】:2019-02-01 03:45:29
【问题描述】:
我想知道为什么在尝试将数据从前端发送到后端时出现“Access-Control-Allow-Origin 不允许来源”错误。在前端我使用 angular 6,在后端我使用 Asp.Net Core 2.1 (web api)。我按照他们在这篇 Microsoft 文章中所说的设置一切:
https://docs.microsoft.com/pl-pl/aspnet/core/security/cors?view=aspnetcore-2.1
但它仍然无法正常工作。我不知道是 Angular 应用设置有问题还是我在这里做错了什么。
后端工作于:https://localhost:5001/
前端工作于:https://localhost:4200/
.net 核心应用 - startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options
.AddPolicy("AllowSpecificOrigin", p =>
p.WithOrigins("https://localhost:4200")
.AllowAnyMethod()
.AllowCredentials()
.AllowAnyHeader()));
services.AddResponseCaching();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
}
else {
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseCors("AllowSpecificOrigin");
app.UseResponseCaching();
app.UseMvc();
}
我还尝试在控制器上使用 [EnableCors("AllowSpecificOrigin")] 属性,这给了我这个错误,但仍然无法正常工作。我不确定是否值得写,但我所有的 HttpGet 方法都可以正常工作。因此,这仅适用于 HttpPost 无法正常工作。最奇怪的是,昨天一切正常,没有任何问题,cors 配置等没有更改,今天无法连接前端和后端。
PS。我也在 startup.cs 中的 services.AddMvc() 下写了这个,但它也没有帮助:
services.Configure<MvcOptions>(options => {
options.Filters.Add(new CorsAuthorizationFilterFactory(PolicyName));
});
【问题讨论】:
-
您的两个应用程序都使用 https 吗?
-
@YankovViacheslav 是的,两个应用程序都使用 https
-
我也有同样的问题。我什至可以看到我的请求,包括标题,但不知何故 .NET 端没有看到它。
标签: .net asp.net-core angular6 asp.net-core-webapi