Я знаю, что уже есть несколько вопросов по этой теме, но я не могу найти решение моей проблемы.
Я новичок в угловом 4, и я пытаюсь создать простую службу создания/обновления/удаления с использованием внешнего пользовательского API.
Сначала у меня были проблемы с CORS, но это было исправлено установкой заголовка "Access-Control-Allow-Origin" на стороне сервера api.
Теперь мои запросы GET/PATCH и DELETE работают нормально, но мой "POST" все еще ловит ошибку.
А вот "странная" часть.
Когда я просматриваю вкладку "сеть" в инструментах разработки Google Chrome, я вижу как "ОПЦИИ", так и запрос "POST" (как должен делать угловой), но только "ОПЦИИ" имеет "Access-Control-Allow- Происхождение: http://localhost: 3003 "в заголовках ответов.
Однако оба отправляют код ответа "200". (Вот несколько скриншотов)
Почему бы пост-перерыв, если другие работали нормально?
Вот некоторые примеры кода из моей службы:
private headers = new Headers({'Content-Type': 'application/json'});
// works
update(id: number, fields: any): Promise<Tag> {
const url = '${this.tagsUrl}/${id}';
return this.http
.patch(url, JSON.stringify(fields), {headers: this.headers})
.toPromise()
.then(res => res.json())
.catch(this.handleError);
}
// doesn't work
create(tagName: string, tagType: number): Promise<any> {
return this.http
.post(this.tagsUrl, JSON.stringify({name: tagName, tagType: tagType}), {headers: this.headers})
.toPromise()
.then(res => res.json())
.catch(this.handleError);
}
Заранее благодарим за любую помощь, которую вы можете принести!
Майкл
Наконец я нашел, откуда эта проблема.
Это произошло из конфигурации моего локального сервера. Мне пришлось раскомментировать эту строку с моего php.ini:
always_populate_raw_post_data = -1
Теперь он работает по назначению.
Спасибо за помощь.