Flask解決跨域問題

2021-10-04 04:32:59 字數 1603 閱讀 5275

問題:

網頁上(client)有乙個ajax請求,flask sever是直接返回 jsonify。

然後ajax就報錯:no 'access-control-allow-origin' header is present on the requested 

原因:ajax跨域訪問是乙個老問題了,解決方法很多,比較常用的是jsonp方法,jsonp方法是一種非官方方法,而且這種方法只支援get方式,不如post方式安全。

即使使用jquery的jsonp方法,type設為post,也會自動變為get。

官方問題說明:

如果跨域使用post方式,可以使用建立乙個隱藏的iframe來實現,與ajax上傳原理一樣,但這樣會比較麻煩。

因此,通過設定access-control-allow-origin來實現跨域訪問比較簡單。

例如:客戶端的網域名稱是www.client.com,而請求的網域名稱是www.server.com

如果直接使用ajax訪問,會有以下錯誤

在被請求的response header中加入header,

一般是在flask views.py

方法一:

def cors(environ):

environ.headers['access-control-allow-origin']='*'

environ.headers['access-control-allow-method']='*'

environ.headers['access-control-allow-headers']='x-requested-with,content-type'

return environ

方法二:

from flask import flask, request, jsonify, make_response

def login():

username = request.form.get('username')

pwd = request.form.get('pwd')

if username == 'h' and pwd == '1':

res = make_response(jsonify(}))

res.headers['access-control-allow-origin'] = '*'

res.headers['access-control-allow-method'] = '*'

res.headers['access-control-allow-headers'] = '*'

return res

方法三:沒試過

在flask開發restful後端時,前端請求會遇到跨域的問題。下面是解決方法。python版本:3.5.1

pip install flask-cors

使用flask_cors的cors,**示例

from flask_cors import *

Flask解決跨域請求問題

筆者在python爬蟲爬取職位資訊的過程中,使用的web框架為flask,在實驗過程中發現請求已經返回成功,但是卻無法在頁面中顯示出結果 通過瀏覽器的控制台發現是因為由於出現了由於跨域請求安全問題導致被瀏覽器攔截了。跨域請求原理 在 html 中,等標籤以及 ajax 都可以指向乙個資源位址,而所謂...

flask解決CORS跨域報錯問題

記錄vue3.0專案引用flask介面報跨域問題 由於瀏覽器受同源策略的限制,在使用xmlhttprequest物件進行跨域請求時,通常會報no access control allow origin header is present on the requested resource.錯誤,導致...

解決Django和Flask的跨域問題

4 解決flask的跨域問題 問題引入 來自8080伺服器的js中的動態介面請求,沒能夠真正傳送給8000動態伺服器 為什麼會這樣?url瀏覽器判斷是否同源的乙個隱含規則 只判斷協議 網域名稱和埠的字面值 答 來自a伺服器的js,請求的目標是b伺服器,那麼這個請求稱之為跨域請求!答 當瀏覽器處理乙個...