こんにちは、極予測やりとりAI というプロダクトの開発責任者をしている しゅん(@MxShun)です。 ある日、cURL は成功し Go HTTP リクエストは失敗する事象に遭遇しました。そのとき調査して分かった原因と仕様を共有します。 目次 事象の詳細 事象の原因 仕様1. HTTP/2 ではヘッダーは小文字のみ許容される 仕様2. Go HTTP/1.1 ではヘッダーは MIME 正規化される まとめ 事象の詳細 HTTP リクエストヘッダー X-Api-Key 値で認証するサーバと通信をしており、サーバのリアーキテクチャに伴う外部結合テスト中に当事象に遭遇しました。 まず疎通確認のため Go アプリケーションのコンテナ内から cURL でリクエストしてみたところ、200 OK が返ってきました。 curl -v \ > -H 'X-Api-Key: xxx' \ > -d '...'