diff --git a/slowapi/util.py b/slowapi/util.py index c44faa9..a596003 100644 --- a/slowapi/util.py +++ b/slowapi/util.py @@ -1,27 +1,28 @@ from starlette.requests import Request -def get_ipaddr(request: Request) -> str: +def get_remote_address(request: Request) -> str: """ Returns the ip address for the current request (or 127.0.0.1 if none found) - based on the X-Forwarded-For headers. - Note that a more robust method for determining IP address of the client is - provided by uvicorn's ProxyHeadersMiddleware. """ - if "X_FORWARDED_FOR" in request.headers: - return request.headers["X_FORWARDED_FOR"] - else: - if not request.client or not request.client.host: - return "127.0.0.1" + is_local = not request.client or not request.client.host + if is_local: + return "127.0.0.1" + else: return request.client.host -def get_remote_address(request: Request) -> str: +def get_ipaddr(request: Request) -> str: """ Returns the ip address for the current request (or 127.0.0.1 if none found) + based on the X-Forwarded-For headers. + Note that a more robust method for determining IP address of the client is + provided by uvicorn's ProxyHeadersMiddleware. """ - if not request.client or not request.client.host: - return "127.0.0.1" + has_forwarded = "X_FORWARDED_FOR" in request.headers - return request.client.host + if has_forwarded: + return request.headers["X_FORWARDED_FOR"] + else: + return get_remote_address(request)