flask中的跨域处理-方法二不使用第三方库

方法1(第三方库)

pip install flask-cors

python 复制代码
from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app, resources={r"/api/*": {"origins": ["http://localhost:63342", "http://localhost:63345"]}})

方法2(声明周期函数)

python 复制代码
from flask import Flask, jsonify, request, make_response

# 创建Flask应用程序实例
app = Flask(__name__)
origins = ["http://localhost:63342", "http://localhost:63345"]


# 定义路由和视图函数
@app.route('/api/object', methods=["get", "post"])
def hello_world():
    loginWay = request.args.get("loginWay")

    username = ""
    if loginWay == "sms":
        mobile = request.json.get("mobile")
        code = request.json.get("code")
        if mobile != "153" or code != "123":
            return jsonify(code=-1, msg="短信验证码错误或已过期")
    elif loginWay == "password":
        username = request.json.get("username")
        password = request.json.get("password")
        if username != "myn" or password != "149":
            return jsonify(code=-1, msg="用户名或密码错误")
    data = {"account": username if username else mobile, "loginWay": loginWay, "msg": "登录成功"}
    return jsonify(code=0, msg="登录成功", data=data)


@app.after_request
def app_after_request(response):
    current_origin = request.headers.get("Origin")
    response.headers['Access-Control-Allow-Origin'] = current_origin
    return response


@app.before_request
def app_before_request():
    if request.method == "OPTIONS" and request.headers.get("Origin") in origins:
        resp = make_response()
        resp.headers.add('Access-Control-Allow-Credentials', 'true')
        resp.headers.add('Access-Control-Allow-Methods', 'GET,POST,OPTIONS')
        resp.headers.add('Access-Control-Allow-Headers',
                         "Content-Type,X-Requested-With,X-Csrf-Token,DNT,X-CustomHeader,"
                         "Keep-Alive,User-Agent,If-Modified-Since,Cache-Control,Authorization")
        return resp

# 启动应用程序
if __name__ == '__main__':
    app.run(debug=True)
相关推荐
寻月隐君2 分钟前
Rust 网络编程实战:用 Tokio 手写一个迷你 TCP 反向代理 (minginx)
后端·rust·github
汪子熙11 分钟前
理解 git checkout 与 git reset 的联系和区别
后端
程序员爱钓鱼18 分钟前
Go 语言泛型 — 泛型语法与示例
后端·面试·go
好开心啊没烦恼20 分钟前
Python 数据分析:DataFrame,生成,用字典创建 DataFrame ,键值对数量不一样怎么办?
开发语言·python·数据挖掘·数据分析
coding and coffee23 分钟前
狂神说 - Mybatis 学习笔记 --下
java·后端·mybatis
周树皮不皮1 小时前
20250704【翻转&二叉树】|Leetcodehot100之226【pass】&今天计划
python
魔芋红茶1 小时前
spring-initializer
python·学习·spring
喜欢吃豆1 小时前
快速手搓一个MCP服务指南(九): FastMCP 服务器组合技术:构建模块化AI应用的终极方案
服务器·人工智能·python·深度学习·大模型·github·fastmcp
一个天蝎座 白勺 程序猿1 小时前
Python(28)Python循环语句指南:从语法糖到CPython字节码的底层探秘
开发语言·python
3gying2 小时前
chromedriver
python