fastapi跨域请求携带cookie
- 添加CORS中间件,并设置allow_credentials为True
- 添加session中间件,并设置same_site为None、https_only为True
- 前端设置打开https和允许跨域
import uvicorn
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
from starlette.middleware.sessions import SessionMiddleware
from core.config import ALLOWED_HOSTS, DEBUG, PROJECT_NAME, VERSION, SECRET_KEY, PORT
def create_app() -> FastAPI:
app = FastAPI(title=PROJECT_NAME, debug=DEBUG, version=VERSION)
app.add_middleware(
CORSMiddleware,
allow_origins=ALLOWED_HOSTS or ["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.add_middleware(SessionMiddleware, secret_key=SECRET_KEY, same_site="None", https_only=True)
return app
app = create_app()
if __name__ == '__main__':
uvicorn.run(app='main:app', host="127.0.0.1", port=PORT, reload=True, debug=True)