JavaWeb基礎知識復習二:Http相關的基礎知識

一、HTTP協議

1.1協議的作用及版本

1.1.1: HTTP是Hyper Text TransferProtocol(超文本--html傳輸協議)。
1.1.2: HTTP協議的作用用戶描述客戶端與服務器間的數據傳遞的。
1.1.3:Http協議的版本:
  • 1.0:特點:每次請求服務器上的資源都要建立新的連接,響應完畢后都會關閉連接。是無狀態的協議.

  • 1.1:特點:在一次TCP/IP連接的基礎上可以發出多次請求和得到多次的響應。比1.0多了一些請求和響應頭。

1.2協議的組成

1.2.1請求部分:
GET /App1/1.html HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR3.0.4506.2152; .NET CLR 3.5.30729)
Host: localhost:8080
Connection: Keep-Alive
                
username=admin&password=123

請求部分由三部分組成的:

  • 請求行:位于第一行
  • 請求消息頭:從第二行開始至第一個空行結束
  • 請求正文:從第一個空行之后的都是正文
1.2.2響應部分:
HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Accept-Ranges: bytes
    ETag: W/"65-1366335797484"
    Last-Modified: Fri, 19 Apr 2013 01:43:17 GMT
    Content-Type: text/html
    Content-Length: 65
    Date: Fri, 19 Apr 2013 02:06:23 GMT
    Warnning:w1
    Warnning: w2

    hello http
    <a href="b.html">click</a>
    ![](1.jpg)

響應部分由三部分組成的:

  • 響應行:位于第一行
  • 響應消息頭:從第二行開始至第一個空行結束
  • 響應正文:從第一個空行之后的都是正文

1.3協議詳細講解

  • 請求行:GET /App1/1.html HTTP/1.1
  • GET:請求方式。默認的請求方式。其他常用的請求方式還有POST。
  • GET的特點:默認的請求方式。
  • /App1/c.html?username=sdsfds&password=234324
    把表單的請求的數據放在了請求的URI的后面。?username=sdsfds&password=234324這樣不好:暴露數據;請求行長度有限。

POST的特點(經常使用的):借助HTML中的form表單。<form action="c.html" method="post">

  • 請求參數出現在正文部分。長度木有限制。相對安全。

  • /App1/1.html:請求的資源的URI。

  • HTTP/1.1:客戶端使用的協議的版本

  • 響應行:HTTP/1.1 200 OK
  • HTTP/1.1:服務器用的協議版本
  • 200:響應碼。代表服務器處理的結果的一種表示
  • 200:正常
  • 302/307:重定向
  • 304:服務器的資源沒有被修改
  • 404:請求的資源不存在
  • 500:服務器報錯了
  • OK:響應碼描述
  • 請求消息頭:向服務器傳遞附加信息
  • Accept:通知服務器,瀏覽器可以接受的MIME類型。(文件系統中用文件擴展名區分數據的類型。網絡上用MIME類型來區分數據類型。Tomcat\conf\web.mxl)
  • MIME類型名稱:大類型/小類型
  • Accept-Charset:通知服務器,瀏覽器支持的字符集
  • Accept-Encoding:通知服務器,瀏覽器能夠解碼的數據壓縮方式。比如:gzip
  • Accept-language:通知服務器,所希望的語言
  • Host:請求的主機和端口
  • *Referer:是一個URL地址。取值是當前頁面之前的那個頁面地址的。防盜鏈
  • *Content-Type:通知服務器,請求正文的MIME類型。
  • 取值:application/x-www-form-urlencoded默認值對應的是form表單的enctype屬性
  • If-Modified-Since:通知服務器,緩存的文件的最后修改時間。
  • User-Agent:通知服務器,瀏覽器類型.
  • Content-Length:表示請求消息正文的長度
  • Connection:表示是否需要持久連接。如果服務器看到這里的值為“Keep -Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1默認進行持久連接

Cookie:這是最重要的請求頭信息之一(會話有關)

響應消息頭:

*Location:通知客戶端,指示新的資源的位置(結合302/307來用。請求重定向)

Server:通知客戶端,服務器的類型

*Content-Encoding:通知客戶端,響應正文的壓縮編碼方式。常用的是gzip。

*Content-Length:通知客戶端響應正文的數據大小

*Content-Type:通知客戶端響應正文的MIME類型

*Refresh:讓瀏覽器自動刷新。取值為整數(刷新的時間間隔,單位是秒)

Refresh:3

Refresh:3;URL=其他資源的URI

*Content-Disposition:通知客戶端,以下載的方式打開資源。

Content-Disposition:attachment;filename=1.jpg

*****Set-Cookie:SS=Q0=5Lb_nQ; path=/search服務器端發送的Cookie(會話有關)

*Expires: -1 網頁的有效時間。單位是毫秒

*Cache-Control: no-cache (1.1)

*Pragma: no-cache (1.0) 通知客戶端不要緩存

文章鏈接:
全面理解HTTP(http://www.lxweimin.com/p/81632fea327c
一步一步教你(https 抓包http://www.lxweimin.com/p/1837203986f5
圖解SSL/TLS協議(http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容