2016-12-20 5 views
0

Я отправляю запрос на удаленный API. Потребуется немного времени для того, чтобы API работал на своей стороне.Angular2 post request несмотря на ошибку XMLHttRequest

После этого небольшого времени ожидания я могу видеть на сетевой вкладке HTTP 200. В ответ я получил надлежащую предназначенную информацию. Все на стороне API отлично работает.

BIT на консоли, я вижу, что столкнулся с ошибкой XMLHttpRequest.

Почему, особенно если у меня есть ошибка XMLHttpRequest, POST завершается 200? Разве это не должно быть «заблокировано» Angular2?

Непреднамеренного результат: мой файл правильно загружен и обрабатывается API, но в Angular2, это вызывает ОШИБКИ часть моего звонка.

Если я использую https://resttesttest.com/, например, кажется, столкнулись с той же ошибки, но он не завершит POST:

О, нет! Javascript вернул ошибку HTTP 0. Одна из распространенных причин этого может заключаться в том, что вы запросили междоменный ресурс с сервера, который не включил соответствующие заголовки CORS в ответ.

Угловой 2 Код для этого вызова

this.http 
    .post(this.documentUploadAPIUrl, formData, options) 
    .subscribe(
     res => { 
     this.responseData = res.json(); 
     console.log(this.responseData); 
     console.log('Uploaded a blob or file!'); 
     }, 
     error => { 
     console.log('Upload failed! Error:', error); 
     } 
    ); 

Console

+0

Вам необходимо настроить CORS на сервере https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_ control_CORS –

+0

сначала вы должны прочитать ссылку J J B во-вторых, что вы используете в качестве backend для создания API-интерфейсов. – rashfmnb

+0

Я думаю, что это бэкэнд JAVA. Не моя работа. Странная вещь: я получаю сообщение об ошибке на консоли, даже если статус, наконец, 200 ... – BlackHoleGalaxy

ответ

2

попытаться установить withCredential атрибутом XMLHttpRequest истина, это будет отправлять учетные данные, управляемые броузером, в угловом 2 вы можете сделать, как это

import { RequestOptions } from '@angular/http'; 


    this.http 
     .post(this.documentUploadAPIUrl, formData, this.post_options) 
     .subscribe(
     res => { 
     this.responseData = res.json(); 
     console.log(this.responseData); 
     console.log('Uploaded a blob or file!'); 
     }, 
     error => { 
     console.log('Upload failed! Error:', error); 
     } 
     ); 



post_options() { 
    return new RequestOptions({ method: 'post', withCredentials : true }); 
} 
+0

проверить, работает ли это, я не уверен, что это сработает –

+0

Протестировано, что это не работает. Я уточнил свой вопрос, чтобы быть более точным. Angular2 фактически ожидает, что вызов будет завершен. Состояние равно 200, но ошибка возникает из-за междоменного XMLHttpRequest и ** Угловая на самом деле не видит статус 200, она только ломает ошибку **. Я попробовал загрузку с локального хоста, используя почтальон, все работает. – BlackHoleGalaxy

+0

okk сейчас он работает в угловом 2 или нет –