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

Python中CORS 跨域中间件的配置和作用原理

一、先定位是什么:

CORS(Cross-Origin Resource Sharing)跨域资源共享,是由浏览器和服务端共同遵循的、规范跨域 HTTP 请求行为的安全机制

它的核心作用是在浏览器 “同源策略” 的安全框架下,允许服务端通过配置响应头明确声明 “哪些源(域名 + 端口)、哪些操作(方法 / 头信息)可以跨域访问自身资源”,从而解决同源策略过于严格导致的合法业务跨域需求问题。

二、为什么?

就是因为浏览器本身有一个叫同源策略的安全机制:

当前端页面的协议、域名、端口与后端 API 的协议、域名、端口不一致时,浏览器会在接收后端响应后拦截数据;而 CORS(跨域资源共享)通过服务端配置响应头,让浏览器判定该跨域请求合法,从而放行响应数据,解决同源策略导致的跨域拦截问题。

三、怎么解决?

CORS 通过让服务器在 HTTP 响应头中注入标准化的 CORS 响应头来告诉浏览器:哪些源(Origin)哪些操作可以跨域访问资源

而不同语言配置 CORS 响应头的方法都不一样,java中是通过实现WebMvcConfigurer接口重写addCorsMappings方法来实现的。而我们的python则使用
跨域资源共享中间件:CORSMiddleware

它的的核心作用就是在HTTP响应中注入CORS相关头信息,让浏览器放行跨域请求。

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() # 配置允许跨域的源(生产环境替换为具体域名) origins = [ "http://localhost:3000", # 前端本地开发地址 "https://www.xxx.com", # 生产环境前端域名 "https://admin.xxx.com", # 多域名支持 ] # 添加跨域中间件 app.add_middleware( CORSMiddleware, allow_origins=origins, # 允许的跨域源(列表形式,支持多个) allow_credentials=True, # 是否允许携带 Cookie(关键,默认 False) allow_methods=["*"], # 允许的请求方法(* 表示所有,如 GET/POST/PUT/DELETE) allow_headers=["*"], # 允许的请求头(* 表示所有,如 Token/Content-Type) max_age=3600, # 预检请求(OPTIONS)的缓存时间(秒),避免频繁预检 ) # 测试接口 @app.get("/api/test") async def test_cors(): return {"msg": "FastAPI 跨域请求成功"} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)

http://www.jsqmd.com/news/121129/

相关文章:

  • 技术人必备的开源工具:Excalidraw手绘白板使用技巧
  • Excalidraw静态资源压缩与懒加载优化实践
  • 21、Windows系统实用工具与控制面板全解析
  • 4、电脑操作与网络连接全攻略
  • Excalidraw贡献指南:如何参与该项目开发?
  • 23、Windows系统设置与相关术语详解
  • 5、Windows XP 文件与网络操作全攻略
  • 耗子叔ARTS周计划挑战--第五周(2025/12/15--2025/12/21)
  • WPF Matrix结构体方法ScaleAt的坐标系
  • 夸克网盘加速_下载提速
  • 18、Outlook Express 使用全攻略
  • 6、电脑文件操作与桌面管理全攻略
  • Excalidraw如何助力初创团队低成本启动项目?
  • 夸克限速_网盘解析
  • Maven二方库
  • Excalidraw手绘风格背后的渲染技术原理剖析
  • 7、Windows XP 操作指南:磁盘、程序与窗口管理
  • 基于Excalidraw的远程头脑风暴解决方案全揭秘
  • Excalidraw企业版功能预测:哪些特性值得期待?
  • 8、Windows XP 使用指南:文件管理与多媒体播放
  • Excalidraw issue响应速度与bug修复周期统计
  • 10、Windows Media Player与打印功能全攻略
  • 2004-基于多目标粒子群(MOPSO)算法的多阈值图像分割(最大熵 + 最小交叉熵)(中文核心、SCI 四区可选)
  • 11、Windows XP 使用指南:打印、搜索与菜单操作全解析
  • 【光子AI】MCP 跟 Function Calling 的本质区别全解析
  • 12、Windows XP界面操作指南
  • 测量仪表的特性
  • 13、Windows XP操作指南:从基础功能到系统关闭
  • 14、Windows XP Taskbar and System Customization Guide
  • 15、Windows XP 与网络使用全攻略