Angular5 HttpClient отправляет данные, но сервер не может понять его параметры

Когда я отправляю обычную HTML-форму, мой серверный сервис (написанный на Laravel) может понимать параметры POST.

Я проверил заголовок запроса в браузере. Параметры запроса:

Form Data:
    _token:v4xCN9fHMpZhoQMGHfbqI01XDsQ1nCxYhy3RDrw5
    username:root
    password:123456

Затем я написал следующий метод для отправки почтового запроса на сервер через angular5 HttpClient:

public post(url: string, data: any): Observable<any[]> {
    const headers = new HttpHeaders({
        'Content-Type': 'application/x-www-form-urlencoded'
    });
    return this.http.post( url, data,
        {
            headers: headers
        }
    ).pipe(
        tap(success => this.handleSuccess(success)),
        catchError(this.handleError())
    );
}

Но браузер отображает другие данные формы следующим образом:

Form Data:
    {"username":"asdf","password":"asdf","_token":"mytoken"}:

В качестве данных я передал следующий объект:

    data = {
        username: 'asdf',
        password: 'asdf',
        _token: 'mytoken'
    };

Но сервер (Laravel) не мог понять параметры запроса. Пожалуйста, дайте мне знать, что с ним не так?


person Roham Rafii    schedule 26.02.2018    source источник


Ответы (1)


Ваш data должен быть экземпляром FormData вместо простого объекта (который будет закодирован в json). Пример:

const data = new FormData();
data.append("username", "asdf");
data.append("password", "asdf");
data.append("_token", "mytoken");
person erosb    schedule 26.02.2018