編程學習-HTTP-超文本傳輸協議

2018.03.24************************Day–***********************
author:wills

HTTP:協議是Hyper Text Transfer Protocol超文本傳輸協調的縮寫。它是用於從萬維網(www:world wide web)服務器傳輸超文本到本地瀏覽器的協議,它基於TCP/IP協議傳遞數據

工作原理:

http協議工作於client-server架構上。瀏覽器作爲http的client通過URL向http服務端WEB服務器發送所有請求

web服務器:Apache IIS(Internet Information Service)

Web服務器收到請求後,向客戶端發送響應消息

http默認端口80,當然你也可修改(之後的一切問題自己解決)

注意事項:

  1. http是無連接:它限制每次連接只處理一個請求。服務器處理完請求,即斷開連接,節約傳輸時間
  2. http媒體獨立:只要client和server知道如何處理data,那麼任何類型的data都可以通過http發送。client和server指定使用合適的MIME-type內容類型
  3. http是無狀態協議:該協議對事務沒有記憶能力。缺少狀態那麼如果處理後面的信息需要用到前面的信息就需要重新發送,導致每次傳送的數據量變大。但是,如果服務器不需要前面信息時,它的反應就比較快。
    下圖(來源於網絡)表示了http協議通信流程:

runoob這裏寫圖片描述

消息架構

http使用同一資源定位符URI(Uniform Resource Identifiers)來傳輸數據和建立連接

客戶端請求消息

客戶端發送一個http請求到服務器的請求消息格式如下包括:請求行(request line),請求頭部(header),空行,請求數據四部分

這裏寫圖片描述

服務器響應消息

響應消息也是四部分狀態行,消息報頭,空行,響應正文
這裏寫圖片描述

http請求方法

http1.0定義三種請求方法:GET,POST,HEAD
http1.1新增五種請求方法:OPRIONS,PUT,DELETE,TRACE,CONNECT

序號 方法 描述
1 GET 請求指定頁面信息,並返回實體主體
2 HEAD 與GET類似,只是返回響應沒有具體內容,用於獲取報頭
3 POST 向指定資源提交數據進行處理請求。數據包含在請求體中,POST請求可能導致新的資源建立或已有資源修改
4 PUT 從client向server傳送的數據取代指定文檔的內容
5 DELETE 請求server刪除指定頁面
6 CONNECT http1.1協議中預留給能夠將連接管道方式的代理服務器。
7 OPTIONS 允許客戶端查看服務器性能
8 TRACE 回顯服務器收到的請求,主要用於測試和診斷。

http響應頭消息

應答頭 說明
Allow 服務器支持哪些請求方法(例如:GET,POST等)
Content-Encoding 文檔的編碼(encoding)方法。只有解碼後才能得到Content-Type頭指定的類型。
Content-Length 表示內容長度,只有當瀏覽器使用持久http連接才需要這個數據
Content-Type 表示後面的文檔屬於什麼MIME類型。servlet默認爲text/plain,但通常需要顯示的指定爲text/html。由於經常設置Content-Type,顧HttpServletResponse提供了一個專用方法setContentType()。
Date 當前的GMT時間。可以使用setDateHeader設置這個頭,以避免轉換時間格式的麻煩
Expires 應該在什麼時候認爲文檔已過期,不在緩存
Last-Modified 文檔最後改動時間。
Location 表示客戶應該到哪裏提取文檔
Refresh 表示瀏覽器應該在多少時間之後刷新文檔,以秒計。Refresh頭不屬於http1.1正式規範的一部份,而是一個擴展,但是Netscape和IE都支持
Server 服務器名字。Servlet一般不設置這個值,由Web服務器自己設置
Set-Cookie 設置和頁面關聯的Cookie
WWW-Authenticate 客戶應該在Authenticationn頭中提供什麼類型的授權信息?

http狀態碼

瀏覽器—請求—服務器—返回—-http狀態碼信息頭
http狀態碼英文是HTTP Status Code
常見狀態碼:
200 - 請求成功
301 - 資源(網頁)被永久轉移到其他URL
404 - 請求的資源(網頁)不存在
500 - 內部服務器錯誤

http狀態碼分類

http狀態碼由三個十進制數在組成,第一個十進制數定義狀態碼類型,好兩個數字沒有分類作用。http狀態碼共五種:

分類 分類描述
1** 信息,服務收到請求,需要請求者繼續執行操作
2** 成功,操作備餐櫃接收並處理
3** 重定向,需要進一步的操作以完成請求
4** 客戶端錯誤,請求包含語法錯誤或無法完成請求
5** 服務器錯誤,服務器處理請求過程中出現錯誤

HTTP狀態碼列表

狀態碼 狀態碼英文名 中文描述
100 Continue 繼續,客戶端應繼續執行請求
101 Switching Protocols 切換協議,只能切到更高級的協議
200 OK 請求成功。一般用於GET與POST請求
201 Created 已創建。成功並創建了新的資源
202 Accepted 已接收請求,但尚未處理完成

.
.
.

狀態碼列表內容太多,我就不一一列出,想看可以點擊我剛纔給的鏈接裏面有詳細內容

HTTP content-type

Content-Type,內容類型,一般指網頁中存在的Content-Type,用於定義網絡文件的類型好網頁的編碼,決定瀏覽器以什麼形式,什麼編碼讀取這個文件,這就是一些Asp網頁點擊的結果卻是下載一張圖片或者一個文件的原因

HTTP content-type 對照表

發佈了43 篇原創文章 · 獲贊 19 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章