Flask解決跨域請求問題

2021-10-25 01:18:22 字數 1078 閱讀 5753

筆者在python爬蟲爬取職位資訊的過程中,使用的web框架為flask,在實驗過程中發現請求已經返回成功,但是卻無法在頁面中顯示出結果

通過瀏覽器的控制台發現是因為由於出現了由於跨域請求安全問題導致被瀏覽器攔截了。

跨域請求原理:

​ 在 html 中,,,,,,等標籤以及 ajax 都可以指向乙個資源位址,而所謂的跨域請求就是指:當前發起請求的域與該請求指向的資源所在的域不一樣。這裡的域指的是這樣的乙個概念:我們認為若協議 + 網域名稱 + 埠號均相同,那麼就是同域。

舉個例子:假如乙個網域名稱為a.com的**,它發起乙個資源路徑為a.com/adduser的 ajax 請求,那麼這個請求是同域的,因為資源路徑的協議、網域名稱以及埠號與當前域一致(例子中協議名預設為http,埠號預設為80)。但是,如果發起乙個資源路徑為b.cn/adduser`的 ajax 請求,那麼這個請求就是跨域請求,因為域不一致,與此同時由於安全問題,這種請求會受到同源策略限制。

解決辦法:

另外,規範也要求對於非簡單請求,瀏覽器必須首先使用 option 方法發起乙個預檢請求(preflight request),從而獲知服務端是否允許該跨域請求,在伺服器確定允許後,才發起實際的http請求。對於簡單請求、非簡單請求以及預檢請求的詳細資料可以閱讀跨資源共享。

​ 具體步驟為:

(1)安裝flask-core:

pip install flask-cors
(2)在flask的控制器啟動類中匯入cors即可。

from flask import flask, request

from flask_cors import *

flask

(__name__)

# 解決跨域請求資源被攔截問題

cors

)

3:本部落格已經同步到個人部落格,如有需要請移步:

Flask解決跨域問題

問題 網頁上 client 有乙個ajax請求,flask sever是直接返回 jsonify。然後ajax就報錯 no access control allow origin header is present on the requested 原因 ajax跨域訪問是乙個老問題了,解決方法很多...

flask跨域請求

跨域檔案上傳的時候,瀏覽器會自動發起乙個 options 方法到伺服器,現在後台解決前端跨域解決前端跨域請求的問題 客戶端發起的這個 options 可以說是乙個 預請求 用於探測後續真正需要發起的跨域 post 請求對於伺服器來說是否是安全可接受的,因為跨域提交資料對於伺服器來說可能存在很大的安全...

解決請求跨域問題

滿足以上任意乙個就算跨域。跨域的解決方案很多,可以在前端解決,也可以在後端解決。1 在main.js中設定axios請求的預設字首 axios.defaults.baseurl api 2 在vue.config.js中配置 module.exports 方式一 crossorigin註解 在con...