1. 程式人生 > >ajax和flask附cookie跨域

ajax和flask附cookie跨域

跨域是個深刻的話題

  • 我現在的專案在做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)

其他程式碼就省略了,沒有特別好的整理,先記錄一下,免得之後忘了細節