flask allowed hosts
1.0.0
이 확장자는 들어오는 요청의 호스트 이름 또는 IP 주소 또는 IP 주소 범위 (네트워크)를 기반으로 플라스크 응용 프로그램에 대한 액세스를 제한하는 방법을 제공합니다.
PIP를 사용하여 패키지를 설치하십시오.
pip install flask-allowed-hostsAllowedHosts 클래스를 초기화하십시오.@allowed_hosts.limit() 데코레이터 (선택 사항)을 사용하여 경로에 액세스 제어를 적용하십시오. from flask import Flask , jsonify , abort
from flask_allowed_hosts import AllowedHosts
app = Flask ( __name__ )
ALLOWED_HOSTS = [ "93.184.215.14" , "api.example.com" ]
def custom_on_denied ():
error = { "error" : "Oops! Looks like you are not allowed to access this page!" }
return jsonify ( error ), 403
allowed_hosts = AllowedHosts ( app , allowed_hosts = ALLOWED_HOSTS , on_denied = custom_on_denied )
# Allows all incoming requests
@ app . route ( "/api/public" , methods = [ "GET" ])
def public_endpoint ():
data = { "message" : "This is public!" }
return jsonify ( data ), 200
# Only allows incoming requests from "93.184.215.14" and "api.example.com"
@ app . route ( "/api/private" , methods = [ "GET" ])
@ allowed_hosts . limit ()
def private_endpoint ():
data = { "message" : "This is private!" }
return jsonify ( data ), 200
# We can override the allowed_hosts list and the on_denied function for each route
@ app . route ( "/api/private/secret" , methods = [ "GET" ])
@ allowed_hosts . limit ( allowed_hosts = [ "127.0.0.1" ], on_denied = lambda : abort ( 404 ))
def secret_private_endpoint ():
data = { "message" : "This is very private!" }
return jsonify ( data ), 200
if __name__ == '__main__' :
app . run ( host = '0.0.0.0' , port = 5000 , debug = True )경고 :이 접근법은 클래스 기반 사용량과 결합 할 때 예기치 않은 행동을 유발할 수 있습니다.
@limit_hosts 데코레이터를 사용하여 경로에 대한 액세스 컨트롤을 적용하십시오. from flask import Flask , jsonify
from flask_allowed_hosts import limit_hosts
app = Flask ( __name__ )
ALLOWED_HOSTS = [ "93.184.215.14" , "api.example.com" ]
def custom_on_denied ():
error = { "error" : "Custom Denied Response" }
return jsonify ( error ), 403
# Allows all incoming requests
@ app . route ( "/api/public" , methods = [ "GET" ])
def public_endpoint ():
data = { "message" : "This is public!" }
return jsonify ( data ), 200
# Only allows incoming requests from "93.184.215.14" and "api.example.com"
@ app . route ( "/api/private" , methods = [ "GET" ])
@ limit_hosts ( allowed_hosts = ALLOWED_HOSTS , on_denied = custom_on_denied )
def private_endpoint ():
return jsonify ({ "message" : "This is private!" }), 200예제 디렉토리에서 더 많은 예제를 찾을 수 있습니다.
app : 플라스크 애플리케이션 인스턴스 (선택 사항).allowed_hosts : 허용 된 호스트 목록 (선택 사항, 모든 호스트를 허용하는 None 에 대한 기본값).on_denied : 거부 된 액세스 동작 (선택 사항)에 대한 기능.확장자는 이러한 구성을 존중합니다.
ALLOWED_HOSTS : 플라스크 구성의 허용 호스트 목록.ALLOWED_HOSTS_ON_DENIED : 플라스크 구성에서 거부 된 액세스 동작에 대한 기능.우선 순위 : 초기화 중에 제공된 값은 플라스크 구성 값을 대체합니다.
ALLOWED_HOSTS_DEBUG 환경 변수를 True 로 설정하여 디버그 모드를 활성화 할 수 있습니다.
export ALLOWED_HOSTS_DEBUG= " True "유용한 디버그 메시지를 콘솔에 인쇄합니다.
기부금을 환영합니다! 풀 요청을 제출하십시오.
질문이나 피드백이 있으시면 언제든지 문제 또는 풀 요청을 열어주십시오.
이 프로젝트는 [MIT] 라이센스에 따라 라이센스가 부여됩니다 - 자세한 내용은 License.md 파일을 참조하십시오.