1. ホーム
  2. angular

[解決済み] Angular HttpClient "パース中のHttp失敗"

2022-04-22 20:30:54

質問

Angular 4からLaravelのバックエンドにPOSTリクエストを送信しようとしています。

私のLoginServiceはこのメソッドを持っています。

login(email: string, password: string) {
    return this.http.post(`http://10.0.1.19/login`, { email, password })
}

LoginComponentでこのメソッドをサブスクライブしています。

.subscribe(
    (response: any) => {
        console.log(response)
        location.reload()
    }, 
    (error: any) => {
        console.log(error)
    })

そして、これが私のLaravelのバックエンドメソッドです。

...

if($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
  return response('Success', 200);
}

return response('Unauthorized', 401);

Chromeの開発ツールによると、私のリクエストは200のステータスコードで成功したとのことです。しかし、私のAngularコードは error ブロックがあり、このメッセージが表示されます。

のパース時にHttpに失敗しました。 http://10.0.1.19/api/login

バックエンドから空の配列を返すと、うまくいくのですが...。Angularは私の応答をJSONとしてパースしようとしているのですね?どうすればこれを無効にできますか?

解決方法は?

を指定することで、返送されるデータが ではない JSONは responseType .

あなたの例では responseType の文字列値 text を、このようにします。

return this.http.post(
    'http://10.0.1.19/login',
    {email, password},
    {responseType: 'text'})

のオプションの完全なリストは以下のとおりです。 responseType です。

  • json (デフォルト)
  • text
  • arraybuffer
  • blob

をご覧ください。 ドキュメント をご覧ください。