08-Flask中实现跨域请求
为什么需要支持跨域
浏览器的同源策略(Same-Origin Policy)限制了跨域请求,如果不进行特殊处理,跨域请求将被浏览器拦截。
场景注意出现在前后的分离项目、第三方API等场景,接口支持跨域能够允许浏览器跨域请求不被浏览器拦截,让前端应用能够安全地请求不同域的资源,绕过浏览器的同源策略限制。
Flask实现跨域请求
flask-cors
的文档:https://flask-cors.readthedocs.io/
1)安装flask-cors
扩展来支持跨域请求
pip install flask-cors -i https://pypi.tuna.tsinghua.edu.cn/simple/
2)在Flask应用中全局跨域
from flask import Flask, jsonify from flask_cors import CORS # 导入CORS app = Flask(__name__) CORS(app) # 为整个应用开启跨域支持 @app.route('/example', methods=['GET']) def example_route(): response = { "message": "This is a cross-origin enabled response!" } return jsonify(response) if __name__ == '__main__': app.run()
扩展:默认情况下,CORS
扩展将允许所有的跨域请求,但也可以通过配置选项来限制允许的来源、方法等。
配置特定的跨域设置,例如仅允许来自 http://localhost:3000
的请求
CORS(app, resources={r"/*": {"origins": "http://localhost:3000"}})
3)在Flask应用中单个接口设置跨域
如果只想给其中某个接口设置跨域,而不是整个应用都支持跨域,可以使用CORS
扩展的cross_origin
装饰器来实现
from flask import Flask from flask_cors import CORS, cross_origin app = Flask(__name__) @app.route('/api/some_endpoint') @cross_origin() def some_endpoint(): # 处理接口逻辑 return 'Hello, World!'
扩展:也可以通过cross_origin
装饰器的参数来进一步自定义跨域请求的行为。例如,你可以指定允许的来源、方法等:
@app.route('/api/some_endpoint') @cross_origin(origins='http://example.com', methods=['GET', 'POST']) def some_endpoint(): # 处理接口逻辑 return 'Hello, World!'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2023-10-25 29-Vue脚手架-mixin 混入
2023-10-25 28-Vue脚手架-props配置项
2020-10-25 列表list