事の始まりは昨日の仕事中。先輩と何気ない話をしている中で、flutterで何かアプリを作ろうという話になり、帰宅後早速Laravelでバックエンドの処理を実装。
いつも通りPostmanでAPIを叩いてみると、初めて見るエラーが!
むむっ!なんだこれは?
困惑しつつ、とりあえずブラウザからデバッグ用にはやしていたURLを叩いてみると普通に表示される。
Laravel側で何か出力されていないか確認してみると「Invalid request (Malformed HTTP request). 」と表示されてる!
なにやらHTTPリクエストが正しくないようだということが分かったので、Postmanの設定を確認。
すると・・・
リクエストヘッダにContent-Lengthが指定されてなかった!
Content-Lengthにチェックを入れて再度POSTすると
やったね!
今回は自分の凡ミスで起きただけだったけど、そもそもsocket hang upって何なのか気になったので、軽く調査してみました。
ググってみると色々な発生事例がありました。
APIキーで認証する予定なのに、Postmanの認証設定で違う認証方式を選んでいた、レスポンスのデータ形式が想定とは異なっていたなど、その原因は多岐にわたるみたいです。
結局直接「これが原因だ!」と言い切れるものはありませんでした。
ただ、基本的にはクライアント側が原因で起きるエラーのようなので、今後起きた時は下のチェックリストを上から順番に確認して原因探っていこうと思います。
- リクエストURLを確認
- リクエストヘッダーに必要なパラメータを入れ忘れてないか
- リクエストヘッダーに変なパラメータをつけてないか
- Postmanで指定している認証方法が間違ってないか