欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python的Django框架中的Cookie相關(guān)處理

 更新時(shí)間:2015年07月22日 15:43:30   投稿:goldensun  
這篇文章主要介紹了詳解Python的Django框架中的Cookie相關(guān)處理,Cookie存儲(chǔ)是每個(gè)開(kāi)發(fā)框架都會(huì)著重注意的重要功能,需要的朋友可以參考下

瀏覽器的開(kāi)發(fā)者在很早的時(shí)候就已經(jīng)意識(shí)到, HTTP's 的無(wú)狀態(tài)會(huì)對(duì)Web開(kāi)發(fā)者帶來(lái)很大的問(wèn)題,于是(cookies)應(yīng)運(yùn)而生。 cookies 是瀏覽器為 Web 服務(wù)器存儲(chǔ)的一小段信息。 每次瀏覽器從某個(gè)服務(wù)器請(qǐng)求頁(yè)面時(shí),它向服務(wù)器回送之前收到的cookies

來(lái)看看它是怎么工作的。 當(dāng)你打開(kāi)瀏覽器并訪問(wèn) google.com ,你的瀏覽器會(huì)給Google發(fā)送一個(gè)HTTP請(qǐng)求,起始部分就象這樣:

GET / HTTP/1.1
Host: google.com
...

當(dāng) Google響應(yīng)時(shí),HTTP的響應(yīng)是這樣的:

HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671;
      expires=Sun, 17-Jan-2038 19:14:07 GMT;
      path=/; domain=.google.com
Server: GWS/2.1
...

注意 Set-Cookie 的頭部。 你的瀏覽器會(huì)存儲(chǔ)cookie值( PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671 ) ,而且每次訪問(wèn)google 站點(diǎn)都會(huì)回送這個(gè)cookie值。 因此當(dāng)你下次訪問(wèn)Google時(shí),你的瀏覽器會(huì)發(fā)送像這樣的請(qǐng)求:

GET / HTTP/1.1
Host: google.com
Cookie: PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671
...

于是 Cookies 的值會(huì)告訴Google,你就是早些時(shí)候訪問(wèn)過(guò)Google網(wǎng)站的人。 這個(gè)值可能是數(shù)據(jù)庫(kù)中存儲(chǔ)用戶信息的key,可以用它在頁(yè)面上顯示你的用戶名。 Google會(huì)(以及目前)使用它在網(wǎng)頁(yè)上顯示你賬號(hào)的用戶名。
存取Cookies

在Django中處理持久化,大部分時(shí)候你會(huì)更愿意用高層些的session 和/或 后面要討論的user 框架。 但在此之前,我們需要停下來(lái)在底層看看如何讀寫(xiě)cookies。 這會(huì)幫助你理解本章節(jié)后面要討論的工具是如何工作的,而且如果你需要自己操作cookies,這也會(huì)有所幫助。

讀取已經(jīng)設(shè)置好的cookies極其簡(jiǎn)單。 每一個(gè)`` HttpRequest`` 對(duì)象都有一個(gè)`` COOKIES`` 對(duì)象,該對(duì)象的行為類似一個(gè)字典,你可以使用它讀取任何瀏覽器發(fā)送給視圖(view)的cookies。

def show_color(request):
  if "favorite_color" in request.COOKIES:
    return HttpResponse("Your favorite color is %s" %       request.COOKIES["favorite_color"])
  else:
    return HttpResponse("You don't have a favorite color.")

寫(xiě)cookies稍微復(fù)雜點(diǎn)。 你需要使用 HttpResponse對(duì)象的 set_cookie()方法。 這兒有個(gè)基于 GET 參數(shù)來(lái)設(shè)置 favorite_color

    cookie的例子:

def set_color(request):
  if "favorite_color" in request.GET:

    # Create an HttpResponse object...
    response = HttpResponse("Your favorite color is now %s" %       request.GET["favorite_color"])

    # ... and set a cookie on the response
    response.set_cookie("favorite_color",
              request.GET["favorite_color"])

    return response

  else:
    return HttpResponse("You didn't give a favorite color.")

你可以給 response.set_cookie() 傳遞一些可選的參數(shù)來(lái)控制cookie的行為

好壞參半的Cookies

也許你已經(jīng)注意到了,cookies的工作方式可能導(dǎo)致的問(wèn)題。 讓我們看一下其中一些比較重要的問(wèn)題:

    cookie的存儲(chǔ)是自愿的,一個(gè)客戶端不一定要去接受或存儲(chǔ)cookie。 事實(shí)上,所有的瀏覽器都讓用戶自己控制 是否接受cookies。 如果你想知道cookies對(duì)于Web應(yīng)用有多重要,你可以試著打開(kāi)這個(gè)瀏覽器的 選項(xiàng):

    盡管cookies廣為使用,但仍被認(rèn)為是不可靠的的。 這意味著,開(kāi)發(fā)者使用cookies之前必須 檢查用戶是否可以接收cookie。

    Cookie(特別是那些沒(méi)通過(guò)HTTPS傳輸?shù)?是非常不安全的。 因?yàn)镠TTP數(shù)據(jù)是以明文發(fā)送的,所以 特別容易受到嗅探攻擊。 也就是說(shuō),嗅探攻擊者可以在網(wǎng)絡(luò)中攔截并讀取cookies,因此你要 絕對(duì)避免在cookies中存儲(chǔ)敏感信息。 這就意味著您不應(yīng)該使用cookie來(lái)在存儲(chǔ)任何敏感信息。

    還有一種被稱為”中間人”的攻擊更陰險(xiǎn),攻擊者攔截一個(gè)cookie并將其用于另一個(gè)用戶。 第19章將深入討論這種攻擊的本質(zhì)以及如何避免。

    即使從預(yù)想中的接收者返回的cookie也是不安全的。 在大多數(shù)瀏覽器中您可以非常容易地修改cookies中的信息。有經(jīng)驗(yàn)的用戶甚至可以通過(guò)像mechanize(http://wwwsearch.sourceforge.net/mechanize/) 這樣的工具手工構(gòu)造一個(gè)HTTP請(qǐng)求。

    因此不能在cookies中存儲(chǔ)可能會(huì)被篡改的敏感數(shù)據(jù)。 在cookies中存儲(chǔ) IsLoggedIn=1 ,以標(biāo)識(shí)用戶已經(jīng)登錄。 犯這類錯(cuò)誤的站點(diǎn)數(shù)量多的令人難以置信; 繞過(guò)這些網(wǎng)站的安全系統(tǒng)也是易如反掌。

相關(guān)文章

  • python入門(mén)教程之識(shí)別驗(yàn)證碼

    python入門(mén)教程之識(shí)別驗(yàn)證碼

    這篇文章主要介紹了python中識(shí)別驗(yàn)證碼的相關(guān)資料,這屬于學(xué)習(xí)python的基本入門(mén)教程,文中介紹的非常詳細(xì),文末也給出了完整的示例代碼,需要的朋友們可以參考學(xué)習(xí),下面來(lái)一起看看吧。
    2017-03-03
  • Python BeautifulSoup基本用法詳解(通過(guò)標(biāo)簽及class定位元素)

    Python BeautifulSoup基本用法詳解(通過(guò)標(biāo)簽及class定位元素)

    這篇文章主要介紹了Python BeautifulSoup基本用法(通過(guò)標(biāo)簽及class定位元素),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • python 簡(jiǎn)單的繪圖工具turtle使用詳解

    python 簡(jiǎn)單的繪圖工具turtle使用詳解

    這篇文章主要介紹了python 簡(jiǎn)單的繪圖工具turtle使用詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • python如何運(yùn)行js語(yǔ)句

    python如何運(yùn)行js語(yǔ)句

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python如何運(yùn)行js語(yǔ)句的相關(guān)內(nèi)容,有興趣的朋友們可以參考下。
    2020-09-09
  • pytorch梯度剪裁方式

    pytorch梯度剪裁方式

    今天小編就為大家分享一篇pytorch梯度剪裁方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python3中pip3安裝出錯(cuò),找不到SSL的解決方式

    python3中pip3安裝出錯(cuò),找不到SSL的解決方式

    今天小編就為大家分享一篇python3中pip3安裝出錯(cuò),找不到SSL的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • django創(chuàng)建超級(jí)用戶過(guò)程解析

    django創(chuàng)建超級(jí)用戶過(guò)程解析

    這篇文章主要介紹了django創(chuàng)建超級(jí)用戶過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python中生成Epoch的方法

    Python中生成Epoch的方法

    下面小編就為大家?guī)?lái)一篇Python中生成Epoch的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • python讀取csv文件示例(python操作csv)

    python讀取csv文件示例(python操作csv)

    這篇文章主要介紹了python讀取csv文件示例,這個(gè)示例簡(jiǎn)單說(shuō)明了一下python操作csv的方法,需要的朋友可以參考下
    2014-03-03
  • python使用Geany編輯器配置方法

    python使用Geany編輯器配置方法

    這篇文章主要介紹了python使用Geany編輯器配置方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評(píng)論