访问传递给 Databricks 应用的 HTTP 标头

Databricks 应用将特定 X-Forwarded-* HTTP 标头从反向代理传递到应用。 使用这些标头访问有关原始请求的信息,例如客户端 IP 地址或协议。

Databricks Apps 在从反向代理转发到应用的请求中包含以下 X-Forwarded-* 标头:

标题 DESCRIPTION
X-Forwarded-Host 客户端请求的原始主机或域。
X-Forwarded-Preferred-Username IdP 提供的用户名。
X-Forwarded-User IdP 提供的用户标识符。
X-Forwarded-Email IdP 提供的用户电子邮件。
X-Real-Ip 发出原始请求的客户端的 IP 地址。
X-Request-Id 请求的 UUID。

在代码中访问标头

可以使用 Web 框架提供的请求对象访问应用代码中的转发标头。 以下示例演示如何使用常用的 Python 框架检索 X-Forwarded-User 标头:

from flask import Flask, request

app = Flask(__name__)

@app.route("/")
def index():
    user = request.headers.get("x-forwarded-user")
    return f"Hello, {user}!"

FastAPI

from fastapi import FastAPI, Request

app = FastAPI()

@app.get("/")
async def index(request: Request):
    user = request.headers.get("x-forwarded-user")
    return {"message": f"Hello, {user}!"}

仅当应用在 Databricks Apps 中运行时,这些标头才可用。 在本地测试时,必须模拟或手动包含它们。