在Flask開發(fā)RESTful后端時(shí),前端請(qǐng)求會(huì)遇到跨域的問題。下面是解決方法:
使用 flask-cors庫可以很容易的解決
pip install flask-cors
兩種方法,一個(gè)是全局/批量的,一個(gè)是單一獨(dú)立的:
安全起見,一般來說使用獨(dú)立的方式會(huì)常用一些。
1.獨(dú)立方式
通過給路由添加@cross_origin標(biāo)識(shí)即可
from flask import Flask, jsonifyfrom flask_cors import cross_origin@app.route('/upload', methods=['POST', 'OPTIONS'])@cross_origin()def upload(): # todo result_text = {"result": "True"} return jsonify(result_text)2.全局方式
也很簡單:
from flask import Flaskfrom flask_cors import CORSif __name__ == '__main__': app.run(host='0.0.0.0', threaded=True, debug=True) CORS(app)
這樣所有的路由都會(huì)支持跨域了。
3.批量方式
還有根據(jù)路由正則來批量控制等方式,更加靈活,可以查閱官方文檔。
對(duì)請(qǐng)求的Response header中加入header
@app.after_requestdef af_request(resp): """#請(qǐng)求鉤子,在所有的請(qǐng)求發(fā)生后執(zhí)行,加入headers。:param resp::return:"""resp = make_response(resp)resp.headers['Access-Control-Allow-Origin'] = '*'resp.headers['Access-Control-Allow-Methods'] = 'GET,POST'resp.headers['Access-Control-Allow-Headers'] = 'x-requested-with,content-type'return resp
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長站。
新聞熱點(diǎn)
疑難解答
圖片精選