2016-06-28 11 views
0

私はPython 2.7から3.5に単純なツールセットを移行しています。ツールの1つはweb.pyを使用した単純なWebサーバーです。接続を閉じるには

残念ながらweb.pyので、私はこのためにbottle.pyに切り替え、まだ3.5には使用できません。

私は私が次の行を追加することにより、web.pyで非常に簡単に行うことができ、接続クローズする必要が作成していインターフェースの仕様によると:私は取得

web.header('Connection', 'close') 

をしかし、ボトルを使用して

このヘッダーを応答に追加するにはどうすればよいですか?私は、ボトルのドキュメントを読んで、オンラインで検索し、ボトルのコードを見てきました。

+1

ボトルWSGIフレームワークと[WSGIプロトコル(https://www.python.org/dev/peps/pep-0333/)が明示的にホップバイホップヘッダを設定することが禁止され 'アプリケーションやミドルウェアでありますHTTP/1.1「ホップバイホップ」の機能やヘッダーを使用することを禁じられています。たぶん、httpサーバーにヘッダーの設定を納得させることができます。しかし、あなたはそれを手動で設定する必要があると確信していますか?それとも、あなたが扱っているカスタムHTTPプロトコルですか? – syntonym

+0

これは実際にかなり説明します。しかし、私はいくつかのクライアントが応答を正しく処理しないという基本的な理由から、Connection:closeをヘッダにクライアントに送る必要があります。 –

+0

組み込みボトル開発サーバーを使用していますか?あなたはたぶんそれを開発のためだけに使うべきです。 – syntonym

答えて

2

は私はわからないので、私は塩の粒で書かれたものは取ります。

ボトルの開発サーバはsligthly修正http.serverサーバで軽く修正wsgirefサーバーです。 「珍しい」ヘッダーを送信するための簡単な方法や構成はありません。サブクラス化してカスタムコードを書くこともできます。 send_headメソッド(here)を上書きして、どこかにself.send_header("Connection", "close")を含めるだけで十分だと思います。

あなたが好きなWSGIサーバとbottly使用することができます。それはかなりのサーバーのためのinbuildのサポートを持っていますが、任意のwsgiサーバーは、アプリケーションを提供できる必要があります。おそらく他のサーバーがカスタムヘッダーを送信するためのより簡単な方法があります。あなたがあなたのヘッダが仕事を得ることができたとしても、それを変更したい場合がありますので

またhttp.serverを製造するためのものではありません。それが内部使用のためだけのものであれば、それを使用することで逃げるかもしれません。

+0

これは正解です。ボトルはwsgiプロトコルの一部ではないので、これを設定することを積極的に防ぎそうです。サーバ上で実行されているアプリケーションではなく、サーバ自体に設定する必要があります。 –

関連する問題