当前位置: 首页 > news >正文

中间件与CORS(基于fastapi)

中间件与CORS

中间件

中间件是一个函数,它在每个请求被特定路径操作处理之前,以及每个响应之后操作。

简单来说,中间件可以看作是请求和响应之间的一个处理层,可以用来实现一些通用的功能,比如日志记录、身份验证、请求修改等。

from fastapi import FastAPI,Request, Response
import time
import uvicornapp = FastAPI()@app.middleware("http")
async def m2(request:Request, call_next):#请求代码块print("中间件m2被调用")response = await call_next(request)#响应代码块response.headers["Author"]="liu"#添加响应头print("中间件m2响应被调用")return response@app.middleware("http")
async def m1(request:Request, call_next):#请求代码块# if request.client.host in ["127.0.0.1"]:#     return Response(status_code=403, content="forbidden")# if request.url.path in ["/user"]:#     return Response(status_code=403, content="forbidden")start = time.time()print("中间件m1被调用")response = await call_next(request)#响应代码块end = time.time()response.headers["timer_process"]=str(end - start)print("中间件m1响应被调用")return response@app.get("/user")
async def get_user():print("get_user函数")time.sleep(3)return{"user" : "current user"}@app.get("/item/{item_id}")
async def get_item(item_id: int):print("get_item函数")return{"item_id" : {item_id}}if __name__ == '__main__':uvicorn.run("main:app", port=8000, reload=True)

CORS

跨域资源共享(Cross-Origin Resource Sharing,CORS)是一种机制,它允许受限的资源(如字体、JavaScript等)在一个网页上被另一个域的网页访问。

  • 手写的
@app.middleware("http")
async def CORSMiddleware(request: Request, call_next):response = await call_next(request)response.headers["Access-Control-Allow-Origin"] = "*"return response
  • 使用FastAPI内置的CORSMiddleware
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(CORSMiddleware,allow_origins=["*"],  # 允许所有来源allow_credentials=True, # 允许携带凭证allow_methods=["*"],  # 允许所有方法allow_headers=["*"],  # 允许所有请求头
)
http://www.dtcms.com/a/507807.html

相关文章:

  • 【Go】P8 Go 语言核心数据结构:深入解析切片 (Slice)
  • 使用Wireshark测试手机APP网络通信完整指南
  • 【AI论文】MemMamba:对状态空间模型中记忆模式的重新思考
  • 郴州建站扁平化网站后台
  • 请问做网站和编程哪个容易些网站建设一般的流程
  • 三地两中心架构介绍
  • Harmony鸿蒙开发0基础入门到精通Day01--JavaScript篇
  • CCIE好像越来越销声匿迹了......
  • 自己做ppt网站汕头网站制作哪里好
  • UVa 1344 Tian Ji The Horse Racing
  • 网站交换链接友情链接的作用网站地图制作
  • 【给服务器安装服务器安装nacos】
  • 影楼模板网站html5风格网站特色
  • Spark的Shuffle过程
  • 前端HTML常用基础标
  • 智能井盖传感器如何成为智慧城市“无声卫士”?
  • Django Web 开发系列(一):视图基础与 URL 路由配置全解析
  • 【python】在Django中,执行原生SQL查询
  • 5 个 Windows 故障排除工具
  • 云南网站建设招商交换友情链接的渠道
  • 在SCNet使用异构海光DCU 部署文心21B大模型报错HIP out of memory(未调通)
  • 嘉兴网站建设优化温州快速建站公司
  • 西安自助建站公司网站没有做404页面
  • 解决Vcenter告警datastore存储容量不足问题
  • 骆驼重链抗体免疫文库构建:从动物免疫到文库质控的关键技术解析
  • BearPi小熊派 鸿蒙开发入门笔记(1)
  • 湖州品牌网站设计wordpress侧栏导航栏
  • 使用EasyExcel生成下拉列表
  • 解密面向对象三大特征:封装、继承、多态
  • 未来之窗昭和仙君(二十六)复制指定元素内容到剪贴板——东方仙盟筑基期