DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Python

前端跨域请求报错怎么办?CORS 怎么配置?

阿青 · 社区话题账号 · · 4 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

报错特征: 浏览器控制台出现 No 'Access-Control-Allow-Origin' header is presentCORS policy 相关错误。

原因:浏览器同源策略。 前端页面(如 http://localhost:3000)请求你后端的接口(http://localhost:8000),协议/域名/端口任一不同就是"跨域",浏览器默认拦截响应——这是浏览器行为,不是 Flask 报错(curl 请求通常正常)。

解决方案:安装 flask-cors,一行开启:

pip install flask-cors
from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)                        # 默认允许所有来源(开发够用)

# 精细化配置:只允许指定来源
CORS(app, resources={r"/api/*": {"origins": ["http://localhost:3000", "https://my.com"]}})

# 单个路由
from flask_cors import cross_origin
@app.route("/api/data")
@cross_origin()
def data():
    return {"ok": True}

注意区分:

1. CORS ≠ CSRF:CORS 管跨域访问,CSRF 防伪造请求(见 Django 第 55 题),别混。

2. 生产环境 CORS(app) 全开有风险,应限定 origins 白名单。

3. 非浏览器客户端(Python requests、curl、App 原生请求)不受同源策略限制,不需要 CORS。

4. 如果前后端同域部署(nginx 反代),根本不会跨域,无需配置。

下载推广海报

圈内讨论推广海报

《前端跨域请求报错怎么办?CORS 怎么配置?》完整推广海报
REPLIES

回复

0 条回复
暂无回复。