どういう問題か
- 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
ヘッダは、いつもひとつ!