溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Flask解決跨域的問題示例代碼

發(fā)布時(shí)間:2020-08-20 10:55:32 來源:腳本之家 閱讀:282 作者:sysu_lluozh 欄目:開發(fā)技術(shù)

跨域文件上傳的時(shí)候,瀏覽器會自動發(fā)起一個(gè) OPTIONS 方法到服務(wù)器,現(xiàn)在后臺解決前端跨域解決前端跨域請求的問題

客戶端發(fā)起的這個(gè) OPTIONS 可以說是一個(gè)“預(yù)請求”,用于探測后續(xù)真正需要發(fā)起的跨域 POST 請求對于服務(wù)器來說是否是安全可接受的,因?yàn)榭缬蛱峤粩?shù)據(jù)對于服務(wù)器來說可能存在很大的安全問題

請求頭 Access-Control-Request-Method 用于提醒服務(wù)器在接下來的請求中將會使用什么樣的方法來發(fā)起請求

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

示例

下載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/

實(shí)現(xiàn)

現(xiàn)在我們看看解決問題的實(shí)際案例

from flask_cors import CORS
app = Flask(__name__,)
# r'/*' 是通配符,讓本服務(wù)器所有的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請求

Flask解決跨域的問題示例代碼

遇到的問題

由于項(xiàng)目中路由是多級路由,通過主路由跳轉(zhuǎn)到子路由,一開始的時(shí)候,允許跨域的配置在上傳文件的子路由中進(jìn)行設(shè)置,發(fā)現(xiàn)OPTIONS請求響應(yīng)值中并沒有返回預(yù)期的頭文件,將跨域設(shè)置在主路由中設(shè)置即可

總結(jié)

以上就是本文關(guān)于Flask解決跨域的問題示例代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI