1. 程式人生 > >HTTP協議的理解

HTTP協議的理解

一、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:伺服器會將快取的最後時間比較,得出頁面是否修改過。如果沒有,則直接使用快取的內容。