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)
相关推荐
葫芦和十三1 小时前
图解 MongoDB 02|BSON:你以为存的是 JSON,其实是带类型的二进制
后端·mongodb·agent
葫芦和十三1 小时前
图解 MongoDB 01|文档数据库
后端·mongodb·agent
陈随易3 小时前
VSCode的Copilot扩展支持接入DeepSeek,Kimi了!
前端·后端·程序员
我不是外星人5 小时前
有了 Harness Engineering ,真的还需要研发工程师吗?
前端·后端·ai编程
candyTong5 小时前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
Rust研习社7 小时前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
IT_陈寒7 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
CaffeinePro8 小时前
Pydantic深度使用:数据校验、枚举、ORM映射
后端·fastapi
Chenyiax9 小时前
从 Chat 到 Responses:OpenAI API 抽象为什么变了?
后端
MariaH9 小时前
Koa和Express的区别
后端