系統學習Windows---HTTP協議

簡介

HTTP協議(超文本傳輸協議),用於萬維網服務器傳輸超文本到本地瀏覽器的傳送協議。

  • HTTP是一個基於TCP/IP通信協議來傳送數據(HTML文件、圖片文件、查詢結果等等)

  • Http協議是基於C/S或B/S架構。

C/S架構:Client-Server 客戶端-服務器
B/S架構:Browser-Server 瀏覽器-服務器

瀏覽器作爲http客戶端通過URL向http服務器即web服務器發送所有請求。web服務器接受到請求之後,會向客戶端發送相應信息。

http常用端口是80,https常用端口443

URL

HTTP 使用統一資源標識符(URI)來傳輸數據和建立連接。
URL是一種特殊類型的URI,全稱是統一資源定位符,是互聯網上標識某一處資源的地址。

舉例:
https://www.runoob.com/linux/linux-cloud-server.html
https:協議部分
www.runoob.com 域名或者端口號
Linux 虛擬目錄部分
Linux-cloud-server 文件部分。

Server角度看工作流程

建立連接
接受請求
處理請求
訪問資源
構建響應報文
發送響應報文
記錄日誌

請求報文:
請求行、請求頭部、空行、請求數據
響應報文:
狀態行、響應報頭、空行和響應數據

請求方法:
GET:請求獲得指定頁面的信息
HEAD:類似get請求,區別在於HEAD不含有呈現數據,而僅僅是HTTP頭信息。
POST:向指定資源提交數據進行處理請求(比如提交表單數據或者是上傳文件)
PUT:從客戶端向服務端傳送數據取代指定內容
DELETE:請求服務器刪除指定頁面
CONNECT:預留能夠將連接改爲管道方式的代理服務器
OPTIONS:允許客戶端查看服務器的性能
TRACE:回顯服務器收到的請求

GET和POST方法之間的區別

  1. get提交的數據會放在url之後,以?分割url和傳輸數據,參數之間以&相連。post方法是將參數放在body裏面。
  2. get提交的數據大小有限值(因爲瀏覽器對url的長度有限制),而post方法提交的數據沒有限制。
  3. get方式使用的是request.QueryString來獲得變量的值,而post方法是通過request.From方法來獲取變量的值。
  4. get方法提交數據是不安全的,比如一個登錄界面,通過get方法提交用戶名和密碼,將在url上直接顯示,是不安全的。別人也可以通過瀏覽器的歷史記錄直接得到用戶名和密碼。

狀態碼
1**:指示信息,標識請求已經接受,繼續處理
2**:成功,標識請求已經被成功接受、處理
3**:重定向,要求必須完成進一步的操作
4**:客戶端錯誤,請求的語法有錯誤或者請求無法實現
5**:服務端錯誤,服務器未能實現合法的請求
200 ok請求已經正常處理完畢
301 請求永久重定向
302 請求臨時重定向
304 請求被重定向到客戶端本地緩存
400 客戶端請求存在語法錯誤
401 請求客戶端沒有經過授權
403 客戶端的請求被服務器拒絕,一般客戶端沒有權限
404 客戶端請求的url不存在
500 服務端永久錯誤
503 服務端發生臨時錯誤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章