2017-05-23 20 views
0

リクエストのサイズを最初に確認するラッパー関数を記述しようとしていますが、要求サイズが期待したものよりも大きければ、特定のコンテンツが返されますクライアントに送信します。私は以前にrequest.content_lengthを使用しようとしましたが、要求がPOST要求であっても機能しましたが、GET要求では機能しません。それを行う方法はありますか?フラスコ内のGETリクエストの内容の長さを取得する方法

+0

どのバージョンのような何かをするだろうか?あなたはGETリクエストでデータを送信するために何を使用していますか? – Aaron

答えて

0

Flaskリクエストは、werkzeugリクエストから継承します。http://werkzeug.pocoo.org/docs/0.12/quickstart/#enter-request。だから、フラスコ内のリクエストのコンテンツの長さは、そのヘッダにある:flask.request.headers.get('Content-Length')

だから、あなたが使用しているのPython、フラスコとWERKZEUGの


import functools 


def check_content_length_of_request_decorator(max_content_length): 
    def wrapper(fn): 
     @functools.wraps(fn) 
     def decorated_view(*args, **kwargs): 
      if int(flask.request.headers.get('Content-Length') or 0) > max_content_length: 
       return flask.abort(400, description='Too much content in request') 
      else: 
       return fn(*args, **kwargs) 
     return decorated_view 
    return wrapper 


@app.route('/my_route', methods=['GET', 'POST']) 
@check_content_length_of_request_decorator(1000) 
def my_route(): 
    return 'This request has a valid content length!' 

関連する問題