日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

JavaEE 要懂的小事:二、图解 Cookie(小甜饼)

發(fā)布時間:2025/7/14 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaEE 要懂的小事:二、图解 Cookie(小甜饼) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Writer????? :BYSocket(泥沙磚瓦漿木匠)

微???????? 博:BYSocket

豆???????? 瓣:BYSocket

FaceBook:BYSocket

Twitter??? :BYSocket

上一篇?圖解Http協(xié)議?,這次繼續(xù)Http家族中的Cookie。泥瓦匠最近看到博客園中一篇好文,如圖:

這就是因為瀏覽器Cookie太大,導(dǎo)致請求時,請求頭域過大造成發(fā)送失敗。下面咱們就了解了解Cookie。按著以前的思路圖文并茂哈,沒圖說個XX。

?

一、概述

首先從HTTP說起,Cookie是Http協(xié)議中那部分呢?

Cookie是什么?

自問自答:Cookie是請求頭域和響應(yīng)頭域的字段。簡單地說,就是伴隨請求和響應(yīng)的一組鍵值對的文本,小文本。所以稱之為”Cookie“餅干。Cookie的生命來源于服務(wù)器。首先是客戶端請求服務(wù)端,此時請求為第一次,無Cookie參數(shù)。這時候,服務(wù)端setCookie發(fā)送給客戶端。記住,Cookie來源自服務(wù)端

Cookie有什么用呢?

又自問自答:Cookie來源自服務(wù)端,當(dāng)然服務(wù)于客戶。就像你我的會話,文字是在我們之間傳遞的。所以Cookie用于服務(wù)端和客戶端的會話。因為Http協(xié)議是無狀態(tài)的,Cookie就是維持會話,說白了就是傳遞數(shù)據(jù)的額外媒介。

下面我們訪問百度地址。

① 產(chǎn)生于服務(wù)端Response,在響應(yīng)頭域

② 請求頭域是這樣的:(可以在Cookie Tab頁發(fā)現(xiàn),和響應(yīng)有一樣的)

下面泥瓦匠詳細(xì)介紹其Cookie在 請求和響應(yīng) 的傳輸過程。

?

二、詳細(xì)介紹Cookie 傳輸過程

直接上圖,一一詳細(xì)解釋。順便寫個CookieServlet,模擬一下Cookie的一生。代碼如下:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 package org.bysocket.http; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns="/cookie") public class CookieServletT extends HttpServlet { ????private static final long serialVersionUID = 1L; ????@Override ????protected void doGet(HttpServletRequest req, HttpServletResponse resp) ????????????throws ServletException, IOException ????{ ????????// 獲取Cookie ????????Cookie[] cookies = req.getCookies(); ????????for (Cookie cookie : cookies) ????????????System.out.println(cookie.getName() + " " + cookie.getValue()); ????????// 創(chuàng)建Cookie ????????Cookie cookie = new Cookie("CookieName", "CookieValue"); ????????cookie.setMaxAge(10); ????????cookie.setHttpOnly(true); ????????resp.addCookie(cookie); ????????? ????????// 響應(yīng) ????????PrintWriter pw = resp.getWriter(); ????????pw.print("<html><body><h1>Hello,Cookie!</h1></body></html>"); ????} ????? }

?

① 客戶端訪問,無服務(wù)端寫入的Cookie。

代碼 new Cookie(“CookieName”, “CookieValue”); 可以看出服務(wù)端產(chǎn)生一個新的鍵值對Cookie,并且設(shè)置,說明第一次請求時,請求的請求頭域Cookie是沒有的。下面沒有CookieName=CookieValue 的Cookie值。如圖:

?

② 服務(wù)端的Cookie傳至瀏覽器。

代碼中 HttpServletResponse.addCookie(cookie); 這樣響應(yīng)就加入了剛剛那個鍵值對Cookie。怎么傳到瀏覽器(客戶端)呢? 同樣F12下,

從圖中可得到,Cookie是通過HTTP的響應(yīng)頭域發(fā)送至瀏覽器。每個Cookie的set,都有一個對應(yīng)Set-Cookie的頭。還有其中的時間代表Cookie的存活時間,HttpOnly可是此Cookie只讀模式。

?

③ 瀏覽器解析Cookie,保存至瀏覽器文件。

直接可以打開IE的Internet選項:

如圖,那個位置文件就是我們Cookie存的地方。既然在哪里,泥瓦匠就去找到它。

打開看看,其內(nèi)容就是:存放著Cookie信息和URL信息及一些關(guān)于時間的。

?
1 2 3 4 5 6 7 8 9 CookieName CookieValue localhost/servletBYSocket/ 9728 ?3416923392 ?30449698 ?3325104969 ?30449698 ?*

這樣就完全搞懂了Cookie如何寫入瀏覽器。

?

④ 客戶端訪問,有服務(wù)端寫入的Cookie。

這樣,同樣的URL再次訪問時,F12下:

不多解釋,看圖。

?

⑤ 服務(wù)器獲取

服務(wù)端這時呢?只要簡單的 getCookies() 就可以獲取Cookie列表了。如圖,服務(wù)端控制臺打印如下:

?

泥瓦匠記憶小抄:Cookie傳輸小結(jié)

① 客戶端訪問,無服務(wù)端寫入的Cookie

② 服務(wù)端的Cookie寫入瀏覽器

③ 瀏覽器解析Cookie,保存至瀏覽器文件

④ 客戶端訪問,有服務(wù)端寫入的Cookie

⑤ 服務(wù)器獲取

?

四、談Cookie的作用到XSS(跨站點腳本攻擊)

Cookie沒有病毒那么危險,但包含敏感信息。比如最常見的記住密碼,或者一些用戶經(jīng)常瀏覽的網(wǎng)頁數(shù)據(jù)。如圖:

用戶不希望這些泄露,甚至被攻擊。但事實上存在這個攻擊,究竟怎么攻擊呢?我在?跨腳本攻擊XSS?一文中也詳細(xì)介紹并提出解決方案。

全名:Cross Site Script,中文名:跨站腳本攻擊。顧名思義,是指“HTML注入”纂改了網(wǎng)頁,插入惡意的腳本,從而在用戶用瀏覽網(wǎng)頁的時候,控制用戶瀏覽器的一種攻擊。一般攻擊的套路如圖所示:

?

五、總結(jié)

回顧全文,Cookie是HTTP協(xié)議中的一種會話機(jī)制。也明白下面兩個問題就好了

1、What 什么是Cookie

2、How Cookie怎么用,干嘛用

Writer????? :BYSocket(泥沙磚瓦漿木匠)

微???????? 博:BYSocket

豆???????? 瓣:BYSocket

FaceBook:BYSocket

Twitter??? :BYSocket

轉(zhuǎn)載于:https://www.cnblogs.com/Alandre/p/4557254.html

總結(jié)

以上是生活随笔為你收集整理的JavaEE 要懂的小事:二、图解 Cookie(小甜饼)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。