繁体   English   中英

在 FastAPI 中获取原点 URL

[英]Get origin URL in FastAPI

是否可以获得来自 FastAPI 的请求的 URL?

例如,如果我有一个在api.mysite.com/endpoint请求的端点,并且从www.othersite.com向该端点发出请求,有没有办法可以检索字符串“www.othersite.com " 在我的端点 function 中?

问题的前提,可以表述为

服务器可以识别请求来自的 URL

被误导了。 确实,一些 HTTP 请求(尤其是浏览器发出的一些请求)带有Origin header和/或Referer [sic] header 此外, Forwarded的 header (如果存在)包含有关发出请求的位置的信息。 但是,HTTP 规范中的任何内容都没有要求请求通常宣传它们的来源。

因此,无论是使用 FastAPI 还是其他一些服务器技术,都无法确定请求来自何处。

根据FastAPI 文档,因此Starlette 的

假设您想在路径操作 function 中获取客户端的 IP 地址/主机

@app.get("/items/{item_id}")
def read_root(item_id: str, request: Request):
    client_host = request.client.host
    return {"client_host": client_host, "item_id": item_id}

请注意,正如其他人所指出的,如果您使用 nginx,则需要向 nginx 请求添加标头以处理该数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM