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)
相关推荐
ss2732 分钟前
Java线程池全解:工作原理、参数调优
java·linux·python
代码扳手3 分钟前
Go 微服务数据库实现全解析:读写分离、缓存防护与生产级优化实战
数据库·后端·go
于是我说4 分钟前
一份Python 面试常见问题清单 覆盖从初级到高级
开发语言·python·面试
BoBoZz194 分钟前
RotationAroundLine 模型的旋转
python·vtk·图形渲染·图形处理
Kurbaneli7 分钟前
Python金融数据分析革命:Mootdx让通达信数据获取变得如此简单
python
Charlie_Byte8 分钟前
Netty + Sa-Token 实现 WebSocket 握手认证
java·后端
多云的夏天8 分钟前
SpringBoot3+Vue3基础框架(1)-springboot+对接数据库表登录
数据库·spring boot·后端
吧啦蹦吧18 分钟前
`org.springframework.util.ClassUtils#forName
开发语言·python
倔强的小石头_20 分钟前
Python 从入门到实战(十):Pandas 数据处理(高效搞定表格数据的 “瑞士军刀”)
人工智能·python·pandas
Together_CZ30 分钟前
DarkIR: Robust Low-Light Image Restoration——鲁棒的低光照图像复原
python·image·robust·darkir·鲁棒的低光照图像复原·low-light·restoration