如何在FastAPI中获取原始URL?

KOB*_*KOB 4 python http-referer http httprequest fastapi

是否可以在 FastAPI 中获取请求来源的 URL?

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

jub*_*0bs 5

问题的前提可以表述为

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

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

因此,无论是使用 FastAPI 还是其他一些服务器技术,都没有明确的方法可以知道请求来自何处。

  • 感谢您解释它为何总是不存在。我最终在 FastAPI 中检索了这个,如 `origin_url = dict(request.scope["headers"]).get(b"referer", b"").decode()`。我对此的要求是知道请求是否来自我们的开发或产品前端服务器,并且从测试来看,这个标头在我们的情况下似乎总是存在。 (3认同)