Fastapi cors问题处理中间件示例

from typing import Callable
from fastapi import Request
from fastapi.responses import Response

def cors_handle_middleware(request: Request, call_next: Callable) -> Response:
    """
    跨域处理中间件
    """
    if request.method == "OPTIONS":
        # options请求不需要走后面的路由
        response = Response(content=b"")
        response.status_code = 204
    else:
        response = call_next(request)

    # 允许的域名
    response.headers["Access-Control-Allow-Origin"] = "*"
    # 允许的请求方法
    response.headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS"
    # 设置cors校验有效时间,单位为秒
    response.headers["Access-Control-Max-Age"] = "1728000"
    # 设置允许携带的请求头参数
    response.headers["Access-Control-Allow-Headers"] = "X-Token,Referer"
    # 设置暴露给客户端响应头参数
    response.headers["Access-Control-Expose-Headers"] = "X-Token,X-Total-Count"
    # 是否允许携带cookies, 如果为true, 则Access-Control-Allow-Origin不能为'*'
    # response.headers["Access-Control-Allow-Credentials"] = "true"

    return response

 

posted @ 2025-04-22 10:24  CJTARRR  阅读(27)  评论(0)    收藏  举报