eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

GAE/Go 1.12は認証ヘッダが重複しているとGoogle Frontendが自動的に400を返却する

どういう問題か

  • GAE/Go 1.12にバージョンアップをした
  • サーバー側のUnitTestは通過していた
  • クライアント側のテストを行うと、特定APIがすべて400を返却していた
  • ログが残っていない。少なくともGAEアプリコードに到達していない。

原因

  • クライアント側で Authorization ヘッダを複数回付与してしまっていた
  • GAE/Go 1.9までのGoogle Frontendを通過してGAE/Goのコードに到達していた
  • 少なくともGAE/Go 1.12では Authorization ヘッダを複数受信した時点でGoogle Frontendが400を返却してコードに到達しない
  • 重複していたヘッダを削除したら問題が解決した

よくわからないところ

  • Androidバイスでokhttp3を使って再現する
  • JVMのUnit Test(Robolectric)でokhttp3を使うと再現しない
    • Android Frameworkとhttp通信の内部実装が異なるからだろうか?

対策

  • Authorization ヘッダは、いつもひとつ!