2017-05-23 2 views
0

먼저 요청 크기를 확인하는 래퍼 함수를 ​​작성하려고합니다. 요청 크기가 예상보다 크면 특정 콘텐츠가 반환됩니다 클라이언트에게. 이전에 request.content_length을 사용하려고 시도했지만 요청이 POST 요청 일 때 작동했지만 GET 요청에는 작동하지 않았습니다. 그렇게 할 수있는 방법이 있습니까?플라스크에서 GET 요청의 콘텐츠 길이를 얻는 방법

+0

어떤 버전과 같은 일을 할 수 있을까? GET 요청으로 데이터를 보낼 때 무엇을 사용하고 있습니까? – Aaron

답변

0

Flask Request는 werkzeug 요청으로부터 상속합니다 : http://werkzeug.pocoo.org/docs/0.12/quickstart/#enter-request. 그래서 플라스크에 요청의 내용 길이는 헤더에 있습니다 flask.request.headers.get('Content-Length')

그래서 당신은 당신이 사용하는 파이썬, 플라스크 및 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!' 

관련 문제