2017-03-06 29 views
1

HTTP2応答を作成する必要があります。これにより、クライアントは同じサーバーに同じアドレスに再接続する必要があります。HTTP2クライアントを強制的にサーバーに再接続する方法

HTTP/1.1の場合、Connection: closeヘッダーで307 Temporary Redirectという応答を送信することができます。

HTTP/2でConnection: closeヘッダーは無視され、リダイレクトは再接続なしで実行され、リダイレクトループエラーが発生します。

また、同じURLのクライアントに421 Misdirected Requestという応答を送信しようとしましたが、この応答を受信して​​もChromeブラウザは何もしません。

HTTP/2クライアントを強制的に再接続する最も適切な方法は何ですか?どのサーバーの応答を送信できますか?おそらくフレームのGOAWAYのいくつかの種類?

+2

切断/再接続を強制する目的は何ですか?既存の接続を破棄する必要がない、あなたの問題に対するHTTP 2の解決策はありませんか? –

答えて

-1

これは、RFC 7540が再接続を生じるはずで推奨しています正常なシャットダウンの手順に従い、あなたGoogle HTTP2

+0

サーバーがクライアントに再接続を強制する方法に関するリンク内の情報が見つかりませんでした。 – DmitriyH

1

役立つことがあります。優雅に接続 をシャットダウンしようとしているサーバが初期に送るべき

を最後のストリーム識別子 が2^31-1に設定されたGOAWAYフレームとNO_ERRORコード。これにより、シャットダウンが遅れており、さらなる要求を開始するクライアントが であることがクライアントに通知され、 が禁止されています。すべての飛行中ストリーム作成時間(少なくとも1回の往復時間)を許容した後、サーバは更新された最終ストリーム識別子を有する別のGOAWAY フレームを送信することができる。これにより、要求が失われることなく、 接続を正常にシャットダウンできるようになります。

Chromeでの421処理については、このバグhttps://bugs.chromium.org/p/chromium/issues/detail?id=546991が開かれてChromeにサーバーへの新しい接続が再び開かれました。これは最近の活動です。

1

はい、HTTP/2では、クライアントにそれ以降の要求のために再接続を要求する方法として、GOAWAYフレームを送信します。これがどのように機能するかは、HTTP/2サポート用のサーバー側の実装またはフレームワークによって異なります。例えば。フレームワークはConnection: closeヘッダーを傍受し、要求後に接続を閉じる要求として扱います。しかし、ほとんどのHTTP/2実装では、ヘッダーが現在の要求スコープだけを対象としており、接続全体ではないと推測するので、そうしたくないと思います。あるいは、フレームワークは要求ハンドラ内で要求と応答データにアクセスするだけでなく、GOAWAYを送信するために使用できるHTTP/2接続への参照を取得する方法を提供できます。

関連する問題