Этот же код работал на Angular 2, но на Angular 6 он возвращает ошибку на http (т. Е. Http не удается обработчику ошибок), но запрос выполняется успешно (код: 200 и возвращает данные, как и ожидалось)
Обновление Сводная информация о проблеме, в которой возникла проблема с корсом
1 - я использовал Angular2 HTTP вместо HttpClient, примененного начиная с Angular4
2 - Хотя это не было основной проблемой, я получил сообщение об ошибке CORS в chrome (возможно, после использования httpclient)
3 - не нужно было добавлять responseType, после устранения ошибки cors на стороне сервера это сработало.
Старый неправильный код:
var headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers });
let postParams = "grant_type=password&username="+username+"&password="+password;
this.http.post("api/Token", postParams, options)
.subscribe(data => {
console.log(data);
},
error => {
//can I get the response body here?
console.log(JSON.stringify(error));
По этой ссылке обнаружена соответствующая проблема https://github.com/angular/angular/issues/19555
поэтому я попытался добавить responseType, как следует
Также в соответствии с этим вопросом я пытался передать свойство responseType, но оно также не работает
Angular 6: Как установить тип ответа в виде текста при выполнении http-вызова
this.http.post(AppSettings.apiaddress + "Token", postParams, {headers,responseType: ResponseContentType.Text})
Если сейчас можно заставить его работать, есть ли способ получить данные об обработчике ошибок в качестве обходного пути?
Ценю вашу помощь, но если вы не знаете ответа, нет необходимости понижать голосование, чтобы другие могли помочь, спасибо