ajax和flask附cookie跨域
阿新 • • 發佈:2019-01-27
跨域是個深刻的話題
- 我現在的專案在做js的ajax和flask之間的跨域工作,其中涉及到了一個問就是使用者資訊的儲存
- 為了方便我打算把常用的資訊儲存在cookie中,一方面是前端顯示方便,另一方面是給flask發api請求的時候可以直接將cookie中的資訊附進去,這樣就減少了get和post的引數
基於上面的背景,接下來我發ajax請求的時候由於flask在另一個埠上,所以是跨域,而且跨域的同時要求我要把cookie帶進去,那麼這裡首先涉及到HTTP協議中的報頭的兩個欄位
Access-Control-Allow-Origin:控制那些外部請求可以訪問該資源
Access-Control -Allow-Credentials :結合客戶端 xmlhttprequest 的 withCredentials 屬性可以控制是否傳送 cookie 等驗證資訊
也就是這些欄位我要處理好,js的ajax程式碼如下
$.ajax({
type: "get",
url: "http://localhost:7000/getTeamTask",
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (data) {
console.log(data);
},
error : function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
在flask端,我使用了flask-cors的外掛,其中為了支援credentials,需要設定supports_credentials=True,這個在flask-cors官方文件中可以看到,程式碼如下:
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app, supports_credentials=True)
其他程式碼就省略了,沒有特別好的整理,先記錄一下,免得之後忘了細節