news 2026/1/10 14:33:25

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/22 3:54:48

技术人必备的开源工具:Excalidraw手绘白板使用技巧

技术人必备的开源工具:Excalidraw手绘白板使用技巧 在一次远程架构评审会议上,团队成员各自打开摄像头和文档,准备讨论新系统的部署方案。然而,当有人试图用文字描述“前端如何通过网关路由到微服务集群”时,沟通立刻…

作者头像 李华
网站建设 2025/12/22 3:49:37

18、Outlook Express使用指南:邮件收发、管理与即时通讯全攻略

Outlook Express使用指南:邮件收发、管理与即时通讯全攻略 在当今数字化的时代,电子邮件和即时通讯已经成为人们日常沟通中不可或缺的工具。Outlook Express作为一款经典的邮件客户端,为用户提供了便捷的邮件收发、联系人管理以及即时通讯等功能。本文将详细介绍Outlook Ex…

作者头像 李华
网站建设 2026/1/4 8:17:47

Excalidraw支持Latex公式吗?数学表达实测结果

Excalidraw 支持 LaTeX 公式吗?数学表达实测结果 在技术团队的日常协作中,我们常常面临一个尴尬场景:想在白板上写个简单的贝叶斯公式 $P(A|B) \frac{P(B|A)P(A)}{P(B)}$,却发现工具只支持纯文本或贴图。这种割裂感不仅打断思路&…

作者头像 李华
网站建设 2026/1/5 22:49:25

吃透指针通用用法:回调函数与 qsort 的使用和模拟

🏠个人主页:黎雁 🎬作者简介:C/C/JAVA后端开发学习者 ❄️个人专栏:C语言、数据结构(C语言)、EasyX、游戏、规划 ✨ 从来绝巘须孤往,万里同尘即玉京 文章目录前景回顾:前…

作者头像 李华
网站建设 2025/12/31 20:55:07

Excalidraw在新能源电站设计中的可视化应用

Excalidraw在新能源电站设计中的可视化应用 在光伏、风电等新能源项目快速落地的今天,一个普遍存在的痛点正日益凸显:从技术构想到可执行方案之间的“表达鸿沟”。工程师们常常面临这样的场景——会议桌上,电气专业刚讲完逆变器选型逻辑&…

作者头像 李华
网站建设 2026/1/3 3:00:24

Excalidraw开源社区活跃度分析:为何持续走红?

Excalidraw开源社区活跃度分析:为何持续走红? 在远程办公成为常态的今天,团队沟通早已不再局限于文字和语音。一张随手勾勒的草图,往往比千言万语更能精准传达想法——尤其是在技术讨论中,一个简单的架构框图可能就决…

作者头像 李华