0

webob を使用してフォーム データにアクセスする WSGI の上に記述された大規模な Web システムがあります (フレームワークは関係ありません)。ランダムに、ブラウザ (またはボット) から UnicodeDecodeError の未処理の例外が発生し、クエリ文字列または POST データでデコードできないエスケープ シーケンスが送信されます。未処理の例外メールを受け取ることを伴わない、適切な既定の動作を探しています。

私の最初のアイデアは、400 を返す (またはデコードできないデータを削除する) 例外ハンドラーを使用して webob 要求オブジェクトのパラメーターにアクセスするサイト全体のミドルウェアを作成することです。

他のシステム/フレームワークはこれをどのように処理しますか?

4

1 に答える 1

0

掘り下げた後、リクエストで .decode() メソッドを使用して、最初にデコードされたリクエストを作成する必要があることを発見しました。これが UnicodeDecodeError で失敗した場合は、400 を返します。例:

    try:
        req = webob.Request(environ).decode('ascii')
    except UnicodeDecodeError, e:
        return webob.Response(status=400, body="""
            <h1>Bad Request</h1>
            <p>We apologize. Your request includes characters the server
            cannot understand. Please click the back button and
            check your request for non-standard characters like accent
            marks and copy-paste data from word processing
            programs.</p>""")(environ, start_response)
于 2013-04-18T16:04:41.867 に答える