はじめに
タイトルの通り、開発中のプログラムからAPI送信時、リクエストのヘッダのUser-Agentを付与しなかったため403エラーで返ってきました。
少しハマったため備忘録として残しておきます。
経緯
取引先が作成したAPIに、開発中のプログラムからリクエストを投げたら403エラーで返ってきました。
403エラー自体はよくある事例ですが、1点不可解な点がありました。
それは事前にAPIの接続確認のためPostmanで正常にレスポンスが返ってくるのを確認済みということです。
なぜかプログラムからのAPIからのみ403エラーが発生します。
もちろんリクエスト内容は同じです。
結論
リクエストヘッダにUser-Agentを付与していなかったことが原因でした。
User-Agentを付与し再度送信してみると無事正常なレスポンスが返ってきました。
今回の件でハマった原因としては、親切なことにPostmanではデフォルトでUser-Agentを付与してくれるということでした。
リクエストのボディ部分だけではなくヘッダ部分もしっかり確認しなくてはいけないですね。。
そもそもUser-Agentとは
User-Agentとは、Webブラウザや他のHTTPクライアントがサーバーに対して自身の識別情報を伝えるために使用するものです。
この情報には、クライアントの種類/オペレーティングシステム/ブラウザのバージョンなどが含まれます。
最近のWebサイトやAPIはスクレイピングやボット対策でUser-Agentが無いリクエストを拒否しているものも多いようですね。
まとめ
特に害はないので素直にUser-Agentは付与して送信しましょう
また、PostmanではデフォルトでUser-Agentを付与してくれていることも覚えておきましょう。
参考