GitHub API の罠にハマって10分位悩んだ
結論
GitHub API を使うときにはHTTPヘッダーの User-Agent
を設定しよう!
経緯
403 Forbidden が返ってくる
GitHub の API を node を使って叩くサンプルを作ろうとして
ユーザ情報を取得する GET /user
を叩くだけの簡単なプログラムを書いたら 403
エラーが返ってくる現象が起きた。
トークンのせいかな?と思うもトークンが違えば 401 Unauthorized
が帰ってくるはずなので何かがおかしい
curl コマンドを使うとうまく行く
しかも curl コマンドを使うと同じトークンでも問題なく実行できるという謎っぷり
User-Agent が設定されていないと受け付けない
手元で試すだけではどうしようもなくなったので大人しくドキュメントを読むことに。
403 Forbidden
をキーワードに検索をかけてみると User Agent Required
という項目を発見。
GitHub の API は User-Agent が設定されていないとそもそもリクエストを受け付けないらしい。
ドキュメントはここ
curl は下のように実は User-Agent も付与して送ってたから実行できてた事も分かった。
terminal
takayuki@takayukioda:~$ curl -v -X HEAD github.com
* Rebuilt URL to: github.com/
* Trying 192.30.252.129...
* Connected to github.com (192.30.252.129) port 80 (#0)
> HEAD / HTTP/1.1
> Host: github.com
> User-Agent: curl/7.43.0
> Accept: */*
「User-Agent があるからセキュリティが向上する」とは言えないけど、こういうところからきちんと情報を集めるんだな〜と感心した。
今後APIを公開する事があったらこういう部分もしっかりパクッ考えていきたいなと思った次第です。