【发布时间】:2020-09-10 14:59:09
【问题描述】:
我一直在学习本教程:
https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnetcore-webapi
身份验证工作正常。
但是,我在控制台中遇到了 CORS 异常:
跨域请求被阻止:同源策略不允许读取位于https://localhost:44351/api/todolist/ 的远程资源。 (原因:CORS 请求未成功)。
在 startup.cs 我改变了:
// builder.AllowAnyOrigin() // .AllowAnyMethod() // .AllowAnyHeader();
到:
builder.WithOrigins("http://localhost:4200") .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials();
这没有效果。
谁能帮我解决一下?
这里是startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddProtectedWebApi(Configuration);
// Creating policies that wraps the authorization requirements
services.AddAuthorization();
services.AddDbContext<TodoContext>(opt => opt.UseInMemoryDatabase("TodoList"));
services.AddControllers();
services.AddCors(o => o.AddPolicy("default", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseCors("default");
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
【问题讨论】:
-
你能在你的核心 api 中分享关于 cors 的完整代码吗?
-
在较新版本的 Chrome 中,当后端实际上存在内部服务器错误时,您可能会在开发者控制台中看到 CORS 错误。检查那里的日志中的异常。
-
我已将 startup.cs 添加到问题中(如上)。
标签: .net angular azure-active-directory msal