javaweb學習(六)——請求報文、響應報文


 1.HTTP協議簡介

  •  HTTPhypertext transport protocol),即超文本傳輸協議。這個協議詳細規定了瀏覽器和萬維網服務器之間互相通信的規則
  •  客戶端與服務端通信時傳輸的內容我們稱之為報文。
  •  HTTP就是一個通信規則,這個規則規定了客戶端發送給服務器的報文格式,也規定了服務器發送客戶端的報文格式。實際我們要學習的就是這兩種報文。客戶端發送給服務器的稱為請求報文服務器發送給客戶端的稱為響應報文

2. HttpWatch

2.1 安裝

  •  由於IE8以下IE瀏覽器沒有提供監聽HTTP的功能,所以如果要使用IE8以下的瀏覽器查看HTTP請求的內容需要安裝一個工具HttpWatch
  •  Firefoxchrome都有內置的開發者工具,可以直接查看Http請求。
  •  HttpWatch的使用非常簡單,直接安裝,然后一直下一步,直到安裝完成。

2.2 使用

  •  安裝完成后打開IE瀏覽器,工具下拉列表可以看到HttpWatch Professional選項

   

  •  打開后點擊Record按鈕開始監聽Http請求。

   

3. 報文

3.1 報文格式

 

3.2 請求報文

3.1.1 報文格式

請求首行;

請求頭信息;

空行;

請求體;

3.1.2 GET請求

GET /Hello/index.jsp HTTP/1.1

Accept: */*

Accept-Language: zh-CN

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

Accept-Encoding: gzip, deflate

Host: localhost:8080

Connection: Keep-Alive

Cookie: JSESSIONID=C55836CDA892D9124C03CF8FE8311B15

 

Get請求沒有請求體,所以也沒有空行!

  •  GET /Hello/index.jsp HTTP/1.1GET請求,請求服務器路徑為Hello/index.jsp,協議為1.1
  •  Host:localhost:請求的主機名為localhost
  •  User-Agent: Mozilla/4.0 (compatible; MSIE 8.0…:與瀏覽器和OS相關的信息。有些網站會顯示用戶的系統版本和瀏覽器版本信息,這都是通過獲取User-Agent頭信息而來的;
  •  Accept: */*:告訴服務器,當前客戶端可以接收的文檔類型, */*,就表示什么都可以接收;
  •  Accept-Language: zh-CN:當前客戶端支持的語言,可以在瀏覽器的工具à選項中找到語言相關信息;
  •  Accept-Encoding: gzip, deflate:支持的壓縮格式。數據在網絡上傳遞時,可能服務器會把數據壓縮后再發送;
  •  Connection: keep-alive:客戶端支持的鏈接方式,保持一段時間鏈接,默認為3000ms
  •  Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:因為不是第一次訪問這個地址,所以會在請求中把上一次服務器響應中發送過來的Cookie在請求中一並發送去過。

3.1.3 POST請求

  •  POST請求要求form標簽的method的屬性設置為post

  

POST /Hello/target.html HTTP/1.1

Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*

Referer: http://localhost:8080/Hello/

Accept-Language: zh-CN

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Host: localhost:8080

Content-Length: 14

Connection: Keep-Alive

Cache-Control: no-cache

Cookie: JSESSIONID=774DA38C1B78AE288610D77621590345

 

username=admin

  •  POST請求是可以有體的,而GET請求不能有請求體。
  •  Referer: http://localhost:8080/hello/index.jsp:請求來自哪個頁面,例如你在百度上點擊鏈接到了這里,那么Referer:http://www.baidu.com;如果你是在瀏覽器的地址欄中直接輸入的地址,那么就沒有Referer這個請求頭了;
  •  Content-Type: application/x-www-form-urlencoded:表單的數據類型,說明會使用url格式編碼數據;url編碼的數據都是以“%”為前綴,后面跟隨兩位的16進制,例如“東軟”這兩個字使用UTF-8url編碼用為“%E4%BC%A0%E6%99%BA”;
  •  Content-Length:13:請求體的長度,這里表示13個字節。
  •  keyword=hello:請求體內容!hello是在表單中輸入的數據,keyword是表單字段的名字。

3.3 響應報文

3.2.1 報文格式

響應首行;

響應頭信息;

空行;

響應體;

 

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Type: text/html;charset=UTF-8

Content-Length: 274

Date: Tue, 07 Apr 2015 10:08:26 GMT

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<h1>Hello</h1>

</body>

</html>

 

  •  HTTP/1.1 200 OK:響應協議為HTTP1.1,狀態碼為200,表示請求成功;
  •  Server: Apache-Coyote/1.1:服務器的版本信息;
  •  Content-Type: text/html;charset=UTF-8:響應體使用的編碼為UTF-8
  •  Content-Length: 274:響應體為274字節;
  •  Date: Tue, 07 Apr 2015 10:08:26 GMT:響應的時間,這可能會有8小時的時區差;
  • get請求與post請求的區別:

    1、除了表單method屬性設置為post外,表單默認為get請求

    2、get請求通過url地址傳送參數,post請求通過請求體傳送參數

    3、get請求沒有請求體,post請求有請求體

    4、get請求發送的參數可以通過地址欄看到,而post請求發送的參數不能看到,所以post請求相較安全一些

    5、url地址的字符限制為255個字符,所以get請求不能發送大量信息

    6、請求體的大小沒有限制,所以我們可以通過post請求發送任何信息

    7、一般情況下提交表單透視post請求

3.2.2 響應碼

響應碼對瀏覽器來說很重要,它告訴瀏覽器響應的結果

  •  200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;
  •  404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源;
  •  500:請求資源找到了,但服務器內部出現了錯誤;
  •  302:重定向,當響應碼為302時,表示服務器要求瀏覽器重新再發一個請求,服務器會發送一個響應頭Location,它指定了新請求的URL地址;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM