2つのEC2インスタンスで実行されていたREST APIアプリケーションがあり、AWS Classic Load Balancerを長時間使用していました。 REST APIのクライアントは、応答ヘッダ(例えば、Location
など)に依存します。AWSアプリケーションLoad Balancerはすべてのヘッダーを小文字に変換します
HTTPヘッダーは定義上大文字と小文字を区別しないことがわかりましたが、残念ながら一部のクライアントはこれを無視して大文字と小文字を区別してヘッダーをチェックしています(例:Location
は大文字で始まると考えています)。
最近、私はAWS Application Load Balancerに変更しました。その結果、すべての応答ヘッダーが小文字に変換されることがわかりました。その結果、クライアントは応答を適切に処理できません。
ここにいくつか質問があります。
- Application Load Balancerの動作は予期されていますか?
- ヘッダーがアプリケーションによって作成されたときにヘッダーを返すように構成する方法はありますか?
テストでは、この回答が部分的に間違っているか不完全であることが示されています。要求がHTTP/2モードで処理されている場合、ALBは実際にヘッダーを小文字に強制しているように見えますが、クライアントがHTTP/2対応でない場合、この強制**は表示されません*クライアントは* HTTP/2を使用しているため* ALBは* HTTP/2をサポートしているので、単に*発生しません。クライアントが小文字のヘッダーを見ている場合は、クライアントがALBに対してHTTP/2を話している必要があると思われます。つまり、小文字がうまくいかないとクライアントが壊れています。 –
これは、RESTクライアントがHTTP/1で、vtorの大文字と小文字を区別するクライアントが期待通りに機能するかどうかを示しますか? – jbird
それは、はい、そうであることを示しているようです...残りのクライアントがHTTP/2であり、ヘッダーの解釈が壊れているか、問題の性質が誤って識別されています。 –