ahserver/ahserver/real_ip.py
2025-07-18 14:04:03 +08:00

25 lines
597 B
Python

from appPublic.log import exception, debug, error
from aiohttp import web
from aiohttp_middlewares.annotations import DictStrStr, Handler, Middleware
def real_ip_middleware() -> Middleware:
@web.middleware
async def middleware(
request: web.Request, handler: Handler
) -> web.StreamResponse:
match_header_keys = [
"X-Forwarded-For",
"X-real-ip"
]
request['client_ip'] = request.remote
for k,v in request.headers.items():
if k in match_header_keys:
v = v.split(',')[-1].strip()
request['client_ip'] = v
break
return await handler(request)
return middleware