Flask Web应用跨域问题:No-Access-Control-Allow-Origin错误排查
Flask跨域配置在Mac Chrome失效的排查点
Flask-CORS未正确处理预检请求
跨域的OPTIONS预检请求可能没被Flask-CORS接管处理。可以尝试显式指定接口路径、允许的源和方法:CORS(app, resources={r"/api/*": {"origins": "http://localhost:8080", "methods": ["GET", "POST", "OPTIONS"]}})或者单独为OPTIONS请求写处理逻辑:
from flask import make_response @app.route("/api/upload", methods=['OPTIONS']) def handle_upload_options(): response = make_response() response.headers["Access-Control-Allow-Origin"] = "http://localhost:8080" response.headers["Access-Control-Allow-Headers"] = "Content-Type" response.headers["Access-Control-Allow-Methods"] = "POST, OPTIONS" return response浏览器缓存干扰
Mac Chrome可能缓存了之前无CORS头的响应记录。打开开发者工具(F12),在Network面板勾选「Disable cache」,清空缓存后重新测试。调试模式的加载问题
开启Flask的debug=True时,代码自动重载可能导致CORS配置未被正确初始化。尝试关闭调试模式,或者确保在app实例创建完成后再配置CORS。源地址的细微差异
确认前端实际的origin是http://localhost:8080,没有额外的尾斜杠(比如http://localhost:8080/)或其他字符差异,极端情况下这种细微差别会导致CORS匹配失败。其他中间件拦截响应头
如果应用中还有权限验证、日志类的中间件,检查这些代码是否修改或移除了Access-Control-Allow-Origin等CORS相关响应头。
内容的提问来源于stack exchange,提问作者maltesinho
相关产品推荐
相关产品推荐

