Python Flask项目设置跨域

上一篇文章中,我利用Docker对Python Flask项目进行打包,并使用了Gitlab CI进行相关的CI/CD操作,最近这个项目遇到一个问题,利用Postman的测试接口的时候没有问题,但是用前端的网页去调用的时候就出现了跨域的问题。

经过搜索,发现有相应的Python包去解决这个问题,这个包叫做flask_cors,官方文档:https://pypi.org/project/Flask-Cors/,这个包类似node.js的cors包,配置好前端允许的请求头即可

这个项目中所有的接口都是对外的,所以需要一个全局的跨域设置

先引入flask_cors包:

from flask_cors import CORS    

然后设置所有的路径都通过该跨域设置:

CORS(app, resources={r"/*": {"origins": "*"}})

由于本项目还用到了socket.io,于是对于socket.io来说也需要设置该跨域,方法也很简单,在初始化的参数加上即可:

socketio = SocketIO()

socketio.init_app(app, async_mode=None, cors_allowed_origins='*')

提交代码之后重新部署,即可解决这个问题


另外如果想对某些路由进行单独设置,这个包提供了一个很方便的方法,叫做装饰器法,在对应的方法上面声明@cross_origin()即可,也就是:

@app.route("/")

@cross_origin()

def helloWorld():

    return "Hello, cross-origin-world!"

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容