flask allowed hosts
1.0.0
この拡張機能は、着信要求のホスト名またはIPアドレスまたはIPアドレス範囲(ネットワーク)に基づいて、フラスコアプリケーションへのアクセスを制限する方法を提供します。
PIPを使用してパッケージをインストールします。
pip install flask-allowed-hostsAllowedHostsクラスを初期化します。@allowed_hosts.limit() Decorator(オプション)を使用して、ルートにアクセス制御を適用します。 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 :Flaskアプリケーションインスタンス(オプション)。allowed_hosts :許可されたホストのリスト(オプション、デフォルトはすべてのホストを許可するものではNone )。on_denied :拒否されたアクセス動作の関数(オプション)。拡張機能はこれらの構成を尊重します:
ALLOWED_HOSTS :Flask Configの許可ホストのリスト。ALLOWED_HOSTS_ON_DENIED :Flask Configで拒否されたアクセス動作の関数。優先順位:初期化中に提供される値フラスコ構成値をオーバーライドします。
ALLOWED_HOSTS_DEBUG環境変数をTrueに設定することにより、デバッグモードを有効にすることができます。
export ALLOWED_HOSTS_DEBUG= " True "これにより、コンソールに役立つデバッグメッセージが印刷されます。
貢献は大歓迎です!プルリクエストをお気軽に送信してください。
ご質問やフィードバックがある場合は、問題やプルリクエストを開いてください。
このプロジェクトは、[MIT]ライセンスに基づいてライセンスされています。詳細については、license.mdファイルを参照してください。