在上一篇文章中,我利用Docker對Python Flask項目進行打包,并使用了Gitlab CI進行相關(guān)的CI/CD操作穿扳,最近這個項目遇到一個問題,利用Postman的測試接口的時候沒有問題壁涎,但是用前端的網(wǎng)頁去調(diào)用的時候就出現(xiàn)了跨域的問題坏瘩。
經(jīng)過搜索,發(fā)現(xiàn)有相應(yīng)的Python包去解決這個問題润脸,這個包叫做flask_cors柬脸,官方文檔:https://pypi.org/project/Flask-Cors/,這個包類似node.js的cors包津函,配置好前端允許的請求頭即可
這個項目中所有的接口都是對外的肖粮,所以需要一個全局的跨域設(shè)置
先引入flask_cors包:
from flask_cors import CORS????
然后設(shè)置所有的路徑都通過該跨域設(shè)置:
CORS(app, resources={r"/*": {"origins": "*"}})
由于本項目還用到了socket.io,于是對于socket.io來說也需要設(shè)置該跨域尔苦,方法也很簡單涩馆,在初始化的參數(shù)加上即可:
socketio = SocketIO()
socketio.init_app(app, async_mode=None, cors_allowed_origins='*')
提交代碼之后重新部署,即可解決這個問題
另外如果想對某些路由進行單獨設(shè)置允坚,這個包提供了一個很方便的方法魂那,叫做裝飾器法,在對應(yīng)的方法上面聲明@cross_origin()即可稠项,也就是:
@app.route("/")
@cross_origin()
def helloWorld():
????return "Hello, cross-origin-world!"