0

ステータス情報をサーバーに通信する必要があるアプリケーションがあります。この情報は事実上、文字列キーを持つ大きな辞書です。

サーバーは Turbogears に基づく Web アプリケーションを実行するため、呼び出されるサーバー側メソッドは任意の数のキーワード引数を受け入れます。

実際のデータに加えて、認証に関連するいくつかのデータ (ID、パスワードなど) を送信する必要があります。1 つの方法は、これらすべてを含む大きな辞書を単純に urlencode し、サーバーへの要求で送信することです。

urllib2.urlencode(dataPlusId)

しかし実際には、認証を行ってデータセットを受け入れるメソッドは、データについて多くを知る必要はありません。データは透過的に送信および受け入れられ、データを処理する別の方法に引き渡されます。

だから私の質問は次のとおりです。一般的に、データの大きな辞書をサーバーに送信する最良の方法は何ですか? そして、この特定のケースでは、ここで認証を処理する最良の方法は何ですか?

4

6 に答える 6

4

安全性が懸念される場合、ピクルを回避することに関するすべての回答に同意します(データがピクル解除される前に送信者が認証される場合はそうではないかもしれませんが、セキュリティが問題になっている場合は、2つのレベルの防御が1つよりも優れている可能性があります)。このような場合、JSON が役立つことがよくあります (または、他に何もできない場合は XML です...!-)。

SpliFF が推奨するように、認証は理想的には Web サーバーに任せるべきであり、SSL (つまり HTTPS) は一般的にそのために適しています。それが不可能であるが、クライアントとサーバーが「秘密」を共有できる場合は、シリアル化された文字列を暗号化された形式で送信するのが最善の方法です。

于 2009-05-24T15:35:24.600 に答える
3

最善の方法は、データを適切な転送形式でエンコードし(保存ではなく、バイナリにすることができるため、ピクルを使用しないでください)、マルチパートポストリクエストとして転送することだと思います

repoze.who で動作させることができるかどうかはわかりません。サインインと関数呼び出しを 1 つのステップでサポートしていない場合は、資格情報を自分で確認する必要があります。

データを xml でラップできる場合は、XML-RPCも使用できます。

于 2009-05-24T14:58:50.180 に答える
2

辞書をファイルにシリアライズして、ファイルをアップロードしてみませんか? このようにして、サーバーはオブジェクトをディクショナリに読み込むことができます。

于 2009-05-24T14:59:06.047 に答える
2

個人的には両端で SimpleJSON を使用し、「ファイル」(実際には単なるストリーム) をマルチパート データとしてポストするだけです。

しかし、それは私です。他のオプションがあります。

于 2009-05-24T17:52:59.827 に答える
1

データに pickle を使用してみましたか?

于 2009-05-24T15:02:18.473 に答える