問題タブ [starlette]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fastapi - Starlette/FastAPI でクライアント証明書の検証 (mTLS) を行う方法
かなり単純な API を実装するために FastAPI フレームワークを使用することを検討していますが、mTLS をサポートする必要があります。AFAIK FastAPI は Starlette に基づいています。Starlette でクライアント証明書を確認することはできますか?
static-files - FastAPI/Starlette で静的ファイルを提供する場合の相対 URL パス
次のようにファイルtest.html
を提供する単純な FastAPI アプリケーションがあります。app/main.py
ディレクトリ構造は次のようになります。
app/
これを変更して、とstatic/
が兄弟である変更されたディレクトリ構造で動作するようにすることはできますか?
試してみreturn FileResponse('../static/test.html')
ましたが、今のところうまくいきません。結果のエラーは、「RuntimeError: File at path ../static/test.html が存在しません」です。
python-3.x - Python バックエンド サーバーを使用してクライアント IP アドレスを取得する方法はありますか
問題のセットアップは次のようになります。
およびワーカー クラスfastapi
を使用して実装および展開された私の Web アプリは、IP アドレスを持つ同じホスト上のプロキシの背後にあります(および VPN コンセントレータなどの他のリモート アプライアンスの背後にあります)。gunicorn
uvicorn
nginx
172.31.x.x
nginx
次のように構成されています。
gunicorn
次のように構成されています。
オブジェクト ( という名前) を使用して、Web アプリをホストするサーバーのインターフェイス IP アドレス (つまり ) を出力fastapi
します。starlette.requests.Request
request
request.client.host
172.31.x.x
request.headers["x-real-ip"], request.headers["x-forwarded-for"]
両方とも、プロキシの前にアプライアンスの IP アドレスを出力します。これは、私の会社でよく知られているファイアウォール アプライアンスです。
私が聞きたいのは:
X-Forwarded-For
HTTP ヘッダー全体を印刷して、中間プロキシ サービスを確認することはできますか?- エンド ユーザーの実際のクライアント IP アドレスを取得する方法 (基本的に、既知のホワイトリスト IP アドレスを上書きします) ?