HTTP協議的理解
阿新 • • 發佈:2018-12-11
一、HTTP概述
HTTP,即超文字傳輸協議,規定了瀏覽器和萬維伺服器之間互相通訊的規則。
特點:
- 基於請求響應模式
- 無狀態的協議: 伺服器不知道是誰在訪問它,只認識一次請求。 一次客戶端請求,在響應結束後,伺服器會自動斷開連結。
二、請求協議
1、請求格式
請求首行: 請求方式,請求路徑,
請求頭資訊: 鍵值對
空行: 用來與請求體分開
請求體: get沒有請求體,只有post才有
2、詳細內容:瀏覽器寫給伺服器的內容,本質上是一組組鍵值對 F12 —— Network —— ALL —— Headers
請求頭:
客戶端告訴服務端說: 我能接收的文件型別: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 我能接收的壓縮格式: Accept-Encoding: gzip, deflate, br 我能接收的語言: Accept-Language: zh-CN,zh;q=0.9 Cache-Control: max-age=0 響應後,等3秒再斷開,keep-alive預設是3秒。 Connection: keep-alive 二次登陸客戶端攜帶的資訊: Cookie: uuid_tt_dd=6833774094542301993_20180923; smidV2=20180923170212d269561e45a71134e9f25383db836027008d5d5cc21b18010; UN=weixin_43173892; __yadk_uid=0RV3c3sxSuIt1WL6nHomsFoldkU4lyAz; dc_session_id=10_1537776417690.812442; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1537710434,1537710469,1537710605,1537776330; UserName=weixin_43173892; UserInfo=AHK8oSBjcb2nmL2c9hNtzN4eUURfvKtPZcvAaGqyiQTX%2FNiMFtZRRJJV%2FACGzr93qPd2%2FWzmyecbhvGUSymYPQ%3D%3D; UserNick=weixin_43173892; AU=37D; BT=1537776429008; UserToken=AHK8oSBjcb2nmL2c9hNtzN4eUURfvKtPZcvAaGqyiQTX%2FNiMFtZRRJJV%2FACGzr93aNtjmLIu19dy2XyC8a02PSPvLSD5goLVyOjV9114YB4jISddRwU21peqngl0IhjB; TY_SESSION_ID=ca36c57d-4a51-41da-8a73-4d3a267e38c6; dc_tos=pfjw6m; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1537776815 域名: Host: blog.csdn.net Referer: https://www.csdn.net/ Upgrade-Insecure-Requests: 1 使用者代理:客戶端計算機的資訊,作業系統,瀏覽器的資訊。 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
3、get請求
HTTP預設的請求方式是get
- 沒有請求體
- 資料必須在1K之內
- 請求資料會暴露在瀏覽器的位址列中
get請求的常用操作: 1、在位址列直接輸入網址,一定是get請求 2、點選頁面上的超連結一定是get請求 3、提交表單時,預設是get,但可以設定為post
4、post請求
-
資料不會出現在位址列中
-
資料的大小沒有上線
-
有請求體
-
請求體重如果存在中文,會使用URL編碼
-
Referer 請求來自於哪個網站,用於統計資料用。
-
Content-Type 表單的資料型別
-
Content-Length:13 請求體的長度,這裡表示13個位元組
-
keyword=Hello 鍵值對,請求體內容,hello是在表單輸入的資料,keyword是表單欄位的名稱
三、響應協議
1、響應頭:
Connection: keep-alive 響應內容的格式: Content-Encoding: gzip 響應內容的文件型別: Content-Type: text/html; charset=UTF-8 時間: Date: Mon, 24 Sep 2018 09:06:23 GMT Keep-Alive: timeout=20 Server: openresty Strict-Transport-Security: max-age= 31536000 Transfer-Encoding: chunked Vary: Accept-Encoding 伺服器版本資訊 server 響應體使用utf-8編碼 Content-Type :HTML;charset=utf-8 響應給客戶端的cookie set-Cookie: 自動重新整理響應頭: Refresh:3;URL=http:www.baidu.com
2、狀態碼:
- 200:請求成功
- 404:請求的資源沒有找到
- 500:請求的資源找到了,但伺服器內部出現了錯誤
- 302:重定向,表示伺服器要求瀏覽器再發一個請求,伺服器會發送一個響應頭Location,它指定了新請求的URL地址。
- 304:伺服器會將快取的最後時間比較,得出頁面是否修改過。如果沒有,則直接使用快取的內容。