flask跨域請求


跨域文件上傳的時候,瀏覽器會自動發起一個 OPTIONS 方法到服務器,現在后台解決前端跨域解決前端跨域請求的問題

客戶端發起的這個 OPTIONS 可以說是一個“預請求”,用於探測后續真正需要發起的跨域 POST 請求對於服務器來說是否是安全可接受的,因為跨域提交數據對於服務器來說可能存在很大的安全問題

請求頭 Access-Control-Request-Method 用於提醒服務器在接下來的請求中將會使用什么樣的方法來發起請求

Access-Control-Allow-Method 和 Access-Control-Allow-Origin 分別告知客戶端,服務器允許客戶端用於跨域的方法和域名

示例

下載flask_cors 包

pip install flask-cors

使用flask_cors的CORS,代碼示例

from flask_cors import * app = Flask(__name__) CORS(app, supports_credentials=True)

以下是Flask-CORS 的官方文檔鏈接

http://flask-cors.readthedocs.io/en/latest/

實現

現在我們看看解決問題的實際案例

from flask_cors import CORS app = Flask(__name__,) # r'/*' 是通配符,讓本服務器所有的URL 都允許跨域請求 CORS(app, resources=r'/*') # 上傳文件 @uploadFiles.route('/upload', methods=['POST']) def uploadFile(): result_text = {"statusCode": 200,"message": "文件上傳成功"} response = make_response(jsonify(result_text)) response.headers['Access-Control-Allow-Origin'] = '*' response.headers['Access-Control-Allow-Methods'] = 'OPTIONS,HEAD,GET,POST' response.headers['Access-Control-Allow-Headers'] = 'x-requested-with' return response

使用POSTMAN請求

這里寫圖片描述

遇到的問題

由於項目中路由是多級路由,通過主路由跳轉到子路由,一開始的時候,允許跨域的配置在上傳文件的子路由中進行設置,發現OPTIONS請求響應值中並沒有返回預期的頭文件,將跨域設置在主路由中設置即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM