成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java面試HTTP篇之二:Cookie

開發 開發工具
Cookie的生命來源于服務器。首先是客戶端請求服務端,此時請求為第一次,無Cookie參數。這時候,服務端setCookie發送給客戶端。記住,Cookie來源自服務端。

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

一、概述

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

Cookie是什么?

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

[[226499]]

Cookie有什么用呢?

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

下面我們訪問百度地址。

① 產生于服務端的Response,在響應頭域:

 

② 請求頭域是這樣的:(可以在Cookie Tab頁發現,和響應有一樣的)

下面泥瓦匠詳細介紹其Cookie在 請求和響應 的傳輸過程。

二、詳細介紹Cookie 傳輸過程

 

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

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

① 客戶端訪問,無服務端寫入的Cookie。

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

② 服務端的Cookie傳至瀏覽器。

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

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

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

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

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

打開看看,其內容就是:存放著Cookie信息和URL信息及一些關于時間的。

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

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

④ 客戶端訪問,有服務端寫入的Cookie。

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

不多解釋,看圖。

⑤ 服務器獲取

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

泥瓦匠記憶小抄:Cookie傳輸小結

① 客戶端訪問,無服務端寫入的Cookie

② 服務端的Cookie寫入瀏覽器

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

④ 客戶端訪問,有服務端寫入的Cookie

⑤ 服務器獲取

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

Cookie沒有病毒那么危險,但包含敏感信息。比如最常見的記住密碼,或者一些用戶經常瀏覽的網頁數據。

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

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

五、總結

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

1、What 什么是Cookie

 2、How Cookie怎么用,干嘛用

【本文為51CTO專欄作者“李強強”的原創稿件,轉載請通過51CTO聯系作者獲取授權】

戳這里,看該作者更多好文 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2018-04-17 16:29:24

Java面試HTTP

2012-05-30 11:11:42

HTML5

2012-03-15 16:27:13

JavaHashMap

2018-07-31 11:20:26

2021-11-02 10:43:34

Java面試安全

2012-02-15 10:34:29

JavaJava Socket

2011-05-27 14:03:22

網站流量

2016-09-06 22:05:41

HttpCookieWeb

2013-03-06 19:00:48

運維安全管理云計算安恒

2009-06-06 18:36:02

java面試題

2020-07-28 08:59:22

JavahreadLocal面試

2019-09-23 08:35:52

2021-01-20 05:31:29

CSS3Filters圖像

2022-05-09 11:52:38

Java卡片服務卡片

2022-03-04 15:43:36

文件管理模塊Harmony鴻蒙

2012-08-14 10:31:28

面試

2012-08-21 09:20:57

Yahoo

2012-08-09 10:02:08

面試Google

2012-11-05 10:01:32

2021-10-11 11:58:41

Channel原理recvq
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品99久久 | 动漫www.被爆羞羞av44 | 欧美成人激情 | 天天综合永久入口 | 久久亚洲国产精品日日av夜夜 | 北条麻妃一区二区三区在线视频 | 欧美久久精品一级c片 | 久久久久久91 | 亚洲国产精品久久久久秋霞不卡 | 三级av在线 | 亚洲一区二区视频在线播放 | 九九九久久国产免费 | 日韩在线播放视频 | 自拍偷拍精品 | 毛片高清| 玖玖久久 | 99热这里有精品 | 成人欧美一区二区三区黑人孕妇 | 精品日韩欧美一区二区 | 国产精品免费一区二区三区四区 | 91久久久精品国产一区二区蜜臀 | 亚洲在线一区二区 | 亚洲欧美成人影院 | 99亚洲精品视频 | 成人一区二区三区在线观看 | 久久99成人| 一区二区三区四区在线 | 日韩国产一区二区三区 | 国产精品视频久久 | 精品久久久久久久人人人人传媒 | h视频免费在线观看 | 美女视频一区 | 日韩成人在线网站 | 一区二区三区在线播放 | 国产情侣一区 | 国产一级片 | 亚洲国产一区二区三区 | 久久久久久久av | 玖玖色在线视频 | 亚洲一区二区视频在线观看 | 久久夜色精品国产 |