
Мой вопрос:
У меня есть ASP.net Core WebApi для авторизовать и аутентифицировать пользователей (.net 7). Я столкнулся с проблемой CORS при вызове конечной точки входа в этот API с помощью моего приложения Angular:
Доступ для получения по адресу «https://myAPI. azurewebsites.net/accounts/authenticate» из источника «https://myAPP.azurewebsites.net» заблокирован политикой CORS: ответ на предварительный запрос не проходит проверку контроля доступа: значение Заголовок «Access-Control-Allow-Origin» в ответе не должен содержать подстановочный знак «*», если режим учетных данных запроса — «include».
Когда я вызываю конечную точку с помощью Postman, все в порядке, и я получаю ожидаемый ответ. Мой метод входа в интерфейс прост:
Код: Выделить всё
login(email: string, password: string) {
return this.http.post(`${baseUrl}/authenticate`, { email, password }, { withCredentials: true })
.pipe(map(account => {
this.accountSubject.next(account);
this.startRefreshTokenTimer();
return account;
}));
}
Код: Выделить всё
var builder = WebApplication.CreateBuilder(args);
// add services to DI container
{
var services = builder.Services;
var env = builder.Environment;
services.AddDbContext();
services.AddCors();
services.AddControllers().AddJsonOptions(x =>
{
// serialize enums as strings in api responses (e.g. Role)
x.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
services.AddSwaggerGen();
// configure strongly typed settings object
services.Configure(builder.Configuration.GetSection("AppSettings"));
// configure DI for application services
services.AddScoped();
services.AddScoped();
services.AddScoped();
builder.Services.Configure x.SwaggerEndpoint("/swagger/v1/swagger.json", ".NET Sign-up and Verification API"));
app.UseCors(x => x
.SetIsOriginAllowed(origin => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
// global error handler
app.UseMiddleware();
// custom jwt auth middleware
app.UseMiddleware();
app.MapControllers();
app.Run(builder.Configuration["AppSettings:origins"]);
Я также пытался настроить свою собственную политику CORS:
Код: Выделить всё
.
.
.
// global cors policy
app.UseCors(
policy =>
{
policy.WithOrigins
("http://localhost:8100",
"https://myAPP.azurewebsites.net",
"https://API1.azurewebsites.net",
"https://API2.azurewebsites.net",
"https://www.myDomain.de")
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.WithMethods("GET", "PUT", "POST", "DELETE", "OPTIONS");
}
);
.
.
.

См. описание выше.< /п>
Подробнее здесь: https://stackoverflow.com/questions/762 ... ndpoint-of