Я действительно борюсь с POST-запросами в Angular 2. Я могу отправить запрос с определенными параметрами, но мой backend (PHP Slim v3) не могут получить параметры. Поэтому я исследовал свой запрос и понял, что мой запрос angulr отправляет «content-type: application/text-plain». Поэтому мой бэкэнд не имеет доступа к переменным.Angular 2 Сообщение: Не отправлять 'content-type: application/json' на сервер
Затем я прочитал много руководств, просмотренных здесь, в переполнении стека и пришел к выводу, что мне нужно добавить заголовок.
Мой угловой класс выглядит следующим образом:
/**
* Generic method for all POST-requests.
*
* @author
* @date 08.01.2017
*/
postData(apiUrl, data): any
{
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let body = JSON.stringify(data)
return this.http.post(apiUrl, body, options)
.map((responseData) =>
{
if(responseData.status === 200)
{
return this.extractData(responseData);
}
else
{
this.handleRestError(null);
}
})
.catch(res => {
return this.handleRestError(res);
});
}
Так что в целом довольно просто. Однако, когда я отправляю этот запрос, странно, что он каким-то образом признает это как запрос OPTIONS и дает мне «Unsupported method: OPTIONS».
Пожалуйста, смотрите заголовок запроса здесь:
OPTIONS /auth/new HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: POST
Origin: http://localhost:8100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Access-Control-Request-Headers: content-type
Accept: */*
Referer: http://localhost:8100/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Мой ответ от внутреннего интерфейса выглядит следующим образом:
HTTP/1.1 200 OK
Host: localhost:8080
Connection: close
X-Powered-By: PHP/5.6.28
Set-Cookie: PHPSESSID=aa546thl9maj7hamjj64vpbe95; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/plain;charset=UTF-8
Allow: POST
Access-Control-Allow-Methods: OPTIONS
Content-Length: 21
И ответ от сервера выглядит следующим образом:
Allowed methods: POST
Тем не менее, мне удалось получить правильный ответ от сервера с отсутствием параметры параметр в почтовом запросе. Затем запрос отправляется правильно, и я вижу нужные параметры в полезной нагрузке запроса в консоли Chrome. Проблема в том, что я не могу получить доступ к переменным на backend, потому что он продолжает давать мне «content-type: text/plain».
Любая идея, что я делаю неправильно?
Благодарим за помощь!
Ого, спасибо за быструю помощь !!! Я допустил метод GET и POST, но я забыл, что в POST-запросах сначала есть запрос OPTIONS. Благодаря!! – dave0688