キープアライブ接続をサポートするマルチスレッドプロキシサーバーで現在作業中です。私はいくつかの奇妙な問題は、Firefoxブラウザからの要求を処理中に参照してください。 localhost:10001/http://urlを使用してローカルプロキシに接続し、このホスト上のすべてのリンクにアクセスできます。プロセスは以下の通りです。 1.ポート10001にバインドするソケットを作成します。 2.接続を受け入れ、クライアントが接続している場合は、fork() 3.クライアント要求を固定接続として処理し続けます。HTTPプロキシサーバーキープアライブ接続のサポート
ここで問題は、localhost:10001/http://url2を使用して別のホストで2番目のURLにアクセスするためにfirefoxで新しいタブを開くと、最初の接続時に作成されたクライアントソケット接続に要求が送られるということです。私は当初は自分のコードに起因するかもしれないと思っていましたが、私はtelnetを使って同じことをしようとしましたが、すべての新しい接続は別のプロセスを作成します。 Firefoxのブラウザでこれを行うようにする特定の設定はありますか?
のためにそれを誤用できることを例えば意味します。しかし、私のプロキシは同時に複数の接続を提供する必要があります。 1つのリクエストに対してHTTP/1.1キープアライブを使用していますが、まだ処理されていますが、今でも永続的な新しいリクエストをサポートしたいと考えています。ブラウザが既存のTCP接続を使用して新しいTCP接続を作成するのを防ぐ方法がありますか? –
@Embed_Programmer:ブラウザは通常、既存の接続がアイドル状態の場合にのみ再利用します。完了しました。それ以外の場合は、新しい接続を開くか、既存の接続がアイドルになるのを待ちます。既存のリクエストが実行されていないと思われるときにブラウザが新しいリクエストを送信していると思われる場合は、リクエストの終了を判断するためのコードが間違っている可能性があります。また、ブラウザがHTTPパイプライニングを使用しているため、同じ接続上の複数の要求を同時に開くことができます。これを回避するには、HTTP/1.0の応答のみを送信します。 –
ありがとうございました。あなたは正しく私のURLを使用してプロキシの使用は間違っていた。私は今ブラウザの中でプロキシを設定し、私を悩ましていたいくつかのエラーは修正されました。ご協力いただきありがとうございます –