瞭解HTTP,一篇文章就夠了_HTTP
來源:互聯網
上載者:User
什麼是HTTP。 HTTP(HyperText Transfer Protocol,超文字傳輸通訊協定 (HTTP)),是一種網路傳輸協議。 HTTP是一種無狀態的協議(不建立持久的連結,無記憶功能)。 HTTP是一個用戶端和伺服器端請求和應答的標準(TCP)。
一個完整的 HTTP請求 ,通常有以下7個步驟: 建立TCP串連 web瀏覽器向web伺服器發送請求命令(GET、POST、URL等) web瀏覽器發送要求標頭資訊
web伺服器應答 web伺服器發送應答頭資訊 web伺服器向web瀏覽器發送資料 web伺服器關閉TCP串連
GET請求(預設) 一般用於查詢資訊 使用URL傳遞參數,參數都顯示在URL中 對所發送的資訊量有限制,一般在2000個字元
POST請求 情境:密碼、敏感性文字、資料量大 一般用於建立、修改、刪除伺服器上的資源 對所發送的資訊量無限制
HTTP狀態代碼,其中首位元字定義了狀態代碼的類型: 1XX:資訊。 2XX:成功。200 OK 3XX:重新導向。 4XX:用戶端錯誤。 5XX:伺服器錯誤 百度百科:http://baike.baidu.com/link?url=44T_WOCQdcIHb4tUEtSwiDMveUmryRt-Q3H5Pl53E30Uytv9tlj43-BAzfsJ2vwzn33FcCfp2UsC64h-Mhw1F_#7
伺服器返回的14種常見HTTP狀態代碼 2016-12-08 Android開發中文站 當我們從用戶端向伺服器發送請求時,伺服器向我們返回狀態代碼 狀態代碼就是告訴我們伺服器響應的狀態 狀態代碼是由3位元字和原因短語組成的(比如最常見的:200 OK) 其中第一位元字表示響應類別,響應類別從1到5分為五種。(add:其實我查閱資料發現還有一個6打頭的一個 600 Unparseable Response Headers。表示伺服器沒有返迴響應頭部,只返回實體內容,也算做伺服器錯誤狀態代碼吧,不過絕對不常見) RFC2616(用來指定HTTP協議標準的文檔)標準定義的就有四十多種,加上擴充能達到六十種 不過常見的大概只有十四種
狀態代碼 響應類別 原因短語 1XX 資訊性狀態代碼(Informational) 伺服器正在處理請求 2XX 成功狀態代碼(Success) 請求已正常處理完畢 3XX 重新導向狀態代碼(Redirection) 需要進行額外操作以完成請求 4XX 用戶端錯誤狀態代碼(Client Error) 用戶端原因導致伺服器無法處理請求 5XX 伺服器錯誤狀態代碼(Server Error) 伺服器原因導致處理請求出錯
2XX 成功 200 OK 表示請求被伺服器正常處理 最常見的就是這個了 隨著這個狀態代碼返回的資訊跟你的要求方法有關 比如GET請求,請求的資源會作為響應實體返回 而HEAD請求,資訊只存在於響應報文首部,因為它不會返回報文實體,只返回報文首部 204 No Content 表示請求已成功處理,但是沒有內容返回(就應該沒有內容返回的狀況) 也就是返回的響應報文中沒有報文實體(其實是沒有報文實體的主體部分) 瀏覽器向伺服器發送請求後收到了204,那麼瀏覽器頁面不會發生更新 一般用在只是用戶端向伺服器發送資訊,而伺服器不用向用戶端返回什麼資訊的情況 206 Partial Content 表示伺服器已經完成了部分GET請求(用戶端進行了範圍請求) 響應報文中包含Content-Range指定範圍的實體內容 3XX 重新導向 301 Moved Permanently 永久重新導向,表示請求的資源已經永久的搬到了其他位置 就是說資源已經被分配了新的URI 新的URI應該提示在響應報文的Location首部欄位 只要不是HEAD請求,響應實體應該包含新URI的超連結和簡短的說明 302 Found 臨時重新導向,表示請求的資源臨時搬到了其他位置 請求的資源暫時被配到到了新的URI 和301很像,只不過資源是臨時移動,資源在將來可能還會改變 同樣地,新的臨時URI應該提示在響應報文的Location首部欄位 只要不是HEAD請求,響應實體應該包含新URI的超連結和簡短的說明 303 See Other 表示請求資源存在另一個URI,應使用GET定向擷取請求資源 303功能與302一樣,區別只是303明確用戶端應該使用GET訪問 (很多HTTP/1.1之前的瀏覽器不能理解303,但是大家都把302當303對待,使用GET請求新URI) 304 Not Modified 表示用戶端發送附帶條件的請求(GET方法請求報文中的IF…)時,條件不滿足 返回304時,不包含任何響應主體 雖然304被劃分在3XX,但和重新導向一毛錢關係都沒有 307 Temporary Redirect 臨時重新導向,和302有著相同含義 儘管302標準禁止POST變為GET,但沒人聽他的 而307就會遵照標準,不會從POST變為GET 但處理響應行為,各個瀏覽器可能不同 4XX 用戶端錯誤 400 Bad Request 表示請求報文存在語法錯誤或參數錯誤,伺服器不理解 伺服器不應該重複提交這個請求 需要修改請求內容後再次發送 401 Unauthorized 表示發送的請求需要有HTTP認證資訊或者是認證失敗了 返回401的響應必須包含一個適用於被請求資源的WWW-Authenticate首部以質詢使用者資訊 瀏覽器初次接受401時,會彈出認證視窗 403 Forbidden 表示對請求資源的訪問被伺服器拒絕了 伺服器可以對此作出解釋,也可以不解釋 想說明的話可以在響應實體的主體部分描述原因 比如說你可能沒有存取權限 404 Not Found 表示伺服器找不到你請求的資源 也有可能伺服器就是不想給你然後騙你找不到(⊙ˍ⊙) 而且大多伺服器都是這麼玩這個狀態代碼的 5XX 伺服器錯誤 500 Internal Server Error 表示伺服器執行請求的時候出錯了 可能是Web應用有bug或臨時故障 更有可能是伺服器原始碼有bug… 503 Service Unavailable 表示伺服器超負載或正停機維護,無法處理請求 如果伺服器知道還需要多長時間,就寫入Retry-After首部欄位返回