中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Django中Cookie設置及跨域問題的處理方法

發布時間:2021-09-24 16:00:08 來源:億速云 閱讀:216 作者:柒染 欄目:開發技術

今天就跟大家聊聊有關Django中Cookie設置及跨域問題的處理方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

什么是Cookie(翻譯:曲奇餅干)

Cookie是存儲在瀏覽器中的一段純文本信息(簡單的說就是瀏覽器緩存),用來記錄用戶的使用情況并將其存儲在本地設備中,當用戶訪問服務器時會將Cookie附帶上,服務端通過讀取Cookie的記錄,來維持用戶與服務器的會話狀態。

Django中Cookie設置及跨域問題的處理方法

Cookie怎么來的

Cookie是由服務器生成的,通常以鍵值對的格式呈現(鍵值由服務器端開發者自行定義),當用戶通過了瀏覽器訪問服務器時,服務器會在返回數據的時候把Cookie傳給瀏覽器(建議不要存儲敏感信息,因為瀏覽器可能被多人使用)。

Django中Cookie設置及跨域問題的處理方法

為什么要用Cookie

Cookie是由HTTP服務器設置的,而HTTP協議是一種無狀態協議,瀏覽器與服務器使用Socket套接字進行通信,當服務器將請求結果返回給瀏覽器之后就會關閉當前的Socket連接并釋放資源,所以每次請求數據都需要建立新的連接。 Cookie的出現彌補了這個缺點,當瀏覽器向服務器發送請求時,會將瀏覽器中存儲的跟網站相關的所有Cookie信息提交給網站服務器,服務器通過Cookie中的信息來驗證用戶身份和判斷HTTP傳輸狀態,并將符合條件的數據返回給瀏覽器。

Django中Cookie設置及跨域問題的處理方法

Cookie的特點

Cookie是基于作用域設計的,也就是說同一域名下只能訪問到當前域名下的Cookie信息,無法訪問到其他域名的Cookie信息的。

怎么設置Cookie

Django可以通過HttpResponse來響應對象的set_cookie,設置好對應的視圖和路由,只要通過瀏覽器訪問該路由,瀏覽器就會自動獲取到set_cookie值并存入到本地(當瀏覽器正在運行時通常都存在內存中,當瀏覽器關閉時通常會存入硬盤中)。

Django中Cookie設置及跨域問題的處理方法

Cookie常用參數

在設置Cookie時可以多參數定義,這個可以根據自己的需求來定義,最少要有key和value,其他可省略不填,方法是:response.set_cookie('鍵', '值')

key:鍵
value:值
max_age:多久后過期,時間為秒,默認為None,臨時cookie設置即關閉瀏覽器就消失
expires:過期時間,具體時間
path:生效路徑,默認‘/'
domain:生效的域名,你綁定的域名
secure:HTTPS傳輸時應設置為true,默認為false
httponly:值應用于http傳輸,這時JavaScript無法獲取

怎么獲取Cookie

Django可以通過HttpResponse請求對象的COOKIES屬性來讀取Cookie,方法是:request.COOKIES.get('鍵'),這樣我們在瀏覽器訪問路由時就能直接獲取到之前設置好的Cookie了。

Django中Cookie設置及跨域問題的處理方法

Cookie跨域問題處理

前面我們只是簡單的進行了路由請求,那么結合到系統中來又會是怎樣的呢,我把Cookie帶入到項目中來(前后端分離模式),我們會發現,同樣的代碼在前面始終無法獲取到Cookie值,這是怎么回事呢?前面有提到Cookie是基于安全域設計的,所以是不支持跨域處理的 ,那么我們怎么來實現跨域訪問呢。這里我們要采用的是“跨域資源共享”,一種可以讓瀏覽器獲得訪問不同源服務器指定資源的權限機制,通過它Axios在訪問服務器時能攜帶著Cookie回來。

Django中Cookie設置及跨域問題的處理方法

首先需要axios能夠獲取到Cookie,出于安全考慮瀏覽器默認是不支持獲取跨域Cookie的,所以這里我們需要對axios設置進行下修改,將withCredentials屬性設置為true,即允許瀏覽器設置或獲取Cookie。設置方法直接在main.js中進行全局設置,axios.defaults.withCredentials = true 。

Django中Cookie設置及跨域問題的處理方法

      當服務器接收到請求后,會根據自己的跨域規則,決定是否同意這次請求,而這個規則在請求設置Cookie時就要給定,這里主要要設置Access-Control-Allow-Origin和Access-Control-Allow-Credentials屬性,Access-Control-Allow-Origin默認為‘*',這里需要改成前端ip,Access-Control-Allow-Credentials改為true即可。

Django中Cookie設置及跨域問題的處理方法

看完上述內容,你們對Django中Cookie設置及跨域問題的處理方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜阳县| 宜宾县| 衢州市| 凯里市| 广灵县| 叙永县| 长宁县| 马尔康县| 盐城市| 龙泉市| 遂川县| 贺州市| 基隆市| 潞西市| 北碚区| 枝江市| 安宁市| 邵武市| 沙河市| 克东县| 浦县| 滦平县| 江口县| 林口县| 临泽县| 新巴尔虎左旗| 东海县| 开封县| 卢湾区| 东台市| 蓝山县| 广河县| 南投市| 泊头市| 枝江市| 清新县| 白玉县| 自治县| 红桥区| 邢台县| 黎川县|