Я уже давно борюсь с этой проблемой.У меня есть промежуточное программное обеспечение в моем веб-API .NET Core, которое отправляет удобное сообщение об ошибке на основе кода ошибки, возвращенного моим SQL Server.
Это прекрасно работает в Postman и когда я отключаю ту же политику происхождения дляChrome Отсюда
Так что это довольно веское доказательство того, что это проблема CORS.Пройдя много постов по проблемам, я все еще не смог решить проблему.
ВОПРОС:
Если я добавлю Allow-Control-Allow-Originрасширение в Chrome здесь , все работает как положено.Всем ли пользователям моего приложения понадобится установить это в своих браузерах, чтобы получать правильные ошибки во внешнем интерфейсе?Это моя самая большая проблема.Вот моя конфигурация ниже:
Политика в запуске Web API
app.UseCors(builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
Я зарегистрировал ее до MVC
services.AddCors();
services.AddMvc();
Это мой метод в Angular
addNewPeopleCategory(
personCategory: CreatePeopleCategory
): Observable<CreatePeopleCategory> {
return this.http
.post<CreatePeopleCategory>(this.url + "/create", personCategory)
.pipe(catchError(this.handleErrorUpdate.bind(this)));
}
Это мой метод обработки ошибок в Angular
private handleErrorUpdate(errorResponse: HttpErrorResponse) {
if (errorResponse.error instanceof ErrorEvent) {
console.log("Client Side Error: ", errorResponse.error.message);
} else {
console.log("Server Side Error: ", errorResponse);
}
this.openSnackbar(errorResponse.error);
return throwError(
"There is an issue with the service. Please try again later.
);
}
Когда CORS не отключены
Когда CORS отключены в Chrome