feat(middleware): 添加HEAD请求中间件支持
添加HeadRequestMiddleware中间件,用于处理HEAD请求。该中间件将HEAD请求转换为GET请求并返回空响应体,同时保留状态码和头部信息,以符合HTTP规范要求。
This commit is contained in:
parent
0bddd95de3
commit
da816d0944
19
app.py
19
app.py
@ -16,7 +16,8 @@ import csv
|
||||
from io import StringIO
|
||||
from typing import Dict, List
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
from starlette.types import ASGIApp
|
||||
from starlette.types import ASGIApp, Message
|
||||
from typing import Optional, Dict, Any
|
||||
|
||||
# Initialize GeoIP2 reader
|
||||
try:
|
||||
@ -99,6 +100,21 @@ class LanguageMiddleware(BaseHTTPMiddleware):
|
||||
|
||||
return response
|
||||
|
||||
class HeadRequestMiddleware(BaseHTTPMiddleware):
|
||||
async def dispatch(self, request: Request, call_next):
|
||||
if request.method == 'HEAD':
|
||||
# Create a new request with GET method
|
||||
request.scope['method'] = 'GET'
|
||||
# Process the request as GET
|
||||
response = await call_next(request)
|
||||
# Create a new response with empty body
|
||||
return Response(
|
||||
status_code=response.status_code,
|
||||
headers=response.headers,
|
||||
media_type=response.media_type
|
||||
)
|
||||
return await call_next(request)
|
||||
|
||||
class UserIdentityMiddleware(BaseHTTPMiddleware):
|
||||
def __init__(self, app: ASGIApp):
|
||||
super().__init__(app)
|
||||
@ -141,6 +157,7 @@ class UserIdentityMiddleware(BaseHTTPMiddleware):
|
||||
|
||||
app = FastAPI()
|
||||
app.add_middleware(LanguageMiddleware)
|
||||
app.add_middleware(HeadRequestMiddleware)
|
||||
app.add_middleware(UserIdentityMiddleware)
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
templates = {}
|
||||
|
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user