httpd一之關於http工作模式的基本說明
本文主要講解http的協議版本、http報文、http的首部以及一個web請求的基本過程等相關概念性問題
本文中主要用到一些名詞解釋
http hyprttext transport protcol 超文字傳輸協議
html hypertext mark language 超文字標記語言
URI:Uniform Resource Identifier 統一資源提示符
URL: Uniform Resource Locator 統一資源定位符
一、HTTP協議的版本:
http0.9:只能傳輸html文件
http1.0:支援多媒體資料的處理,保持連線。有快取功能
http1.1:支援更多的請求方法,更加精細的快取控制,能保持持久連線
二、HTTP報文格式
1)HTTP事務
一次請求與其對應的響應,稱之為HTTP的事務
2)HTTP請求的方法
GET:請求獲取一個資源,需要伺服器傳送給客戶端
HEAD:跟GET相似,但其不需要伺服器發回資源僅傳回響應首部即可
POST:支援HTML表單提交,表單中有使用者填入的資料,這些資料會傳送到伺服器端,由伺服器儲存至某個位置,也可能是傳送給某個處理程式進行處理
PUT:與GET相反,是向伺服器寫入文件,如釋出系統
DELETE:請求刪除URL指向的資源
OPTIONS:探測伺服器端對某資源所支援的請求方法
TRACE:用於追蹤請求資源要經過的防火牆、代理或閘道器等
其中GET、HEAD為比較安全的請求方法,PUT、DELETE為相對不安全的方法
3)響應報文程式碼(此處只有一些常用的程式碼)
1XX:資訊性狀態碼
2XX: 成功狀態碼
200:表示訪問OK
201:Created OK 寫入成功
3XX: 重定向狀態碼
301:Moved Permanebtly 永久重定向,在響應報文中使用“Location:URL”來指定資源現在所在的位置
302:Found 臨時重定向,在響應報文中使用“Location:URL”來指定資源臨時所在的位置
4XX:客戶端的錯誤
403:Forbidden 請求被伺服器拒絕
404:Not Fonud 伺服器無法找到請求的URL
405:Method Not Allowed 不允許使用此方法請求響應的URL
5XX:伺服器類的錯誤
500:Internal Server Error 伺服器內部錯誤
502:Bad Gateway 代理伺服器上游收到一條偽響應
503:Service Unavailable 伺服器此時無法提供服務,但將來可能可用
4)HTTP首部
通用首部:請求和響應都可以使用的
Connection:定義c/s之間關於請求/響應的有關選項,例如,對於HTTP/1.0可以使用 Connection keep-alibe
Via:顯示了報文中經過的中間節點
Cache-Control:快取指示,常用於快取伺服器
請求首部:只能請求時使用的
報文格式:
<method><request-url><version>
<headers>
<entity-body>
<method>:請求方法,希望伺服器端執行的動作,如GET、HEAD、POST等
<request-url>:請求的資源,可以是相對路徑,也可以是完整的URL
<version>:協議版本,格式HTTP/<major>。<minor>,如http/1.0
<headers>:HTTP首部
選項
Cilent-IP:請求端ip
Host:請求的主機名和埠號,虛擬主機環境下用於不同的虛擬主機
Referer:指明瞭請求當前資源的原始資源URL
User-Agent:使用者代理,使用什麼工具發出的請求
Accept首部:使用者標明客戶自己更傾向於支援使用的能力
Accept:指明伺服器能傳送的媒體型別
Accept-Charset:支援使用的字符集
Accept-Encoding:支援使用的編碼方式
Accept-Language:支援使用的語言
請求條件首部
Expect:期望的伺服器端的行為
If-Modified-Since:是否在指定的時間以來修改過此資源
If-None-Match:如果提供的實體標記與當前的實體標記不相符,則獲取檔案
跟安全相關的請求首部
Authorication:客戶端提交給服務端的認證資料,如賬號和密碼
Cookie:客戶端傳送給伺服器端的身份標識,還有高階版本Cookie2
響應首部:只能響應時使用的
報文格式:
<version><status><reason-phrase>
<headers>
<entity-body>
<status>:狀態碼
<reason-phrase>:原因短語,數字狀態嗎易讀資訊
<entity-body>:主體部分
選項
Age:響應持續的時間
Server:向客戶端標明伺服器程式名稱和版本
協商首部:
Accept-Ranges:對當前資源來講,伺服器所能夠接受的範圍型別
Vary:首部列表,伺服器會根據列表中的內容挑選出最適合的版本傳送給客戶端
跟安全相關的響應首部
Set-Cookie:伺服器端在某客戶端第一次請求時發給客戶端的令牌,還有高階版本Set-Cookie2
WWW-Authenication:質詢,即要求客戶端提供賬號和密碼
實體首部:用於指定實體屬性
Location:資源的新位置
Allow:允許對此資源使用的請求方法
內容首部:
Contern-Encoding 返回的編碼方式
Contern-Language 返回的語言
Contern-Length 放回的長度
Contern-type 主體物件的型別
Contern-Range 表示的主體的位元組範圍
Contern-Location 資源主體所在的位置
擴充套件首部:非標準首部,可能是由程式開發者建立的
三、一個web請求的基本過程
建立請求
接受請求
處理請求
訪問資源
構建響應
傳送響應
記錄日誌
本文轉自wangfeng7399 51CTO部落格,原文連結:http://blog.51cto.com/wangfeng7399/1378276,如需轉載請自行聯絡原作者
相關文章
- java 關於操作Collection的一點說明Java
- 關於GeoWebCache的部署說明Web
- 關於DOCTYPE的使用和說明
- 關於NTP SERVER的配置說明Server
- 關於DedeCMS版本號的說明
- MySQL:關於ICP特性的說明(未完)MySql
- 關於 UiPath Activities 中文手冊的一些說明UI
- 【FLASHBACK】關於閃回資料庫的一點說明資料庫
- 關於contraint_name的一點說明AI
- LVS - 相關介紹、工作模式和排程演算法的說明模式演算法
- 關於支援OPenACC的編譯器說明編譯
- 關於 RPM 命令的權威說明
- 關於事務的英文說明 Transaction OverviewView
- 關於SAP abap程式開發的說明
- 關於BUGZILLA的說明和安裝
- 關於golang中下劃線(_)的語義說明Golang
- Oracle中關於PCTFREE和PCTUSED的說明Oracle
- 關於MSCOMM控制元件的一些說明(轉貼)控制元件
- Linux的基本檔案說明Linux
- Hp ux 的一些關於記憶體監控的說明UX記憶體
- 關於Numba的執行緒實現的說明執行緒
- 一張圖說明 函式, 例項(物件), 原型之間的關係函式物件原型
- git分支管理和工作流規範:基本概念說明Git
- 關於Repository的唯一物件之傳說物件
- MySQL:關於RR模式下insert..selcet sending data狀態說明MySql模式
- 關於包(Package)應用規範的說明 (轉)Package
- keycloak~關於社群登入的過程說明
- 【AMM】關於ASM中AMM引數說明ASM
- 關於資料庫中客戶基本資料儲存資訊分類的設計說明 (轉)資料庫
- 關於 Node.js 裡 ES6 Modules 的一次更新說明Node.js
- 關於MV*模式的一己之見,科普向模式
- HTTP 常見狀態碼說明HTTP
- OGG工作原理及一些配置說明
- 關於PGA_AGGREGATE_TARGET的引數說明
- 關於AIX上VMO調整引數的若干說明AI
- java中關於如何執行jar格式程式的說明JavaJAR
- 前端元件wolfTable中關於表格凍結部分的說明前端元件
- HTTP認證之基本認證——Basic(一)HTTP