日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP 详解

發布時間:2024/4/13 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTTP超文本傳輸協議,被設計用于Web瀏覽器和Web服務器之間的通信,請求響應的模型:客戶端主動請求服務器,服務器響應客戶端。

工作流程
a)首先客戶端與服務器需要建立連接。單擊某個超級鏈接,HTTP的工作開始。
b)建立連接后,客戶端發送一個請求給服務器,請求方式的格式為:統一資源標識符(URL)、協議版本號,MIME信息包括請求修飾符、客戶端請求的信息。
c)服務器接到請求后,給予相應的響應信息
d)客戶端接收到服務器返回的信息通過瀏覽器顯示出來,然后客戶端與服務器斷開連接。

HTTP連接
HTTP/1.0 為每個請求/回應都打開一個TCP連接,缺點:打開一個連接需要多次的信息往返,會導致整個過程很慢
HTTP/1.1 引入持久連接概念,通過Connection頭部來部分控制連接
HTTP/2 通過一個連接多個消息的方式來保持始終保持為暖連接

URL詳解
URL基本格式:schema://host[:port#]/path/.../;url-params[#anchor]
scheme : 指定低層使用的協議(例如:http, https, ftp)
host : HTTP服務器的IP地址或者域名
port#: HTTP服務器的默認端口是80,這種情況下端口號可以省略。如果使用了別的口,必須指明,例如 http://www.cnblogs.com:8080/
path: 訪問資源的路徑
url-params
query-string: 發送給http服務器的數據
anchor: 錨

HTTP協議是無狀態的,意味著服務器不會在兩個請求之間保留任何數據(狀態),為了解決這個問題web程序引入了Cookie機制來維護狀態,用來判斷是否是同一個用戶發送的請求。

HTTP協議定義了很多與服務器交互的方法:GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE,CONNECT對應資源的查,改,增,刪, 獲得報文首部,詢問支持的方法,追蹤路徑,要求使用隧道協議連接代理。

狀態碼
1XX : 提示信息 - 表示請求已被成功接收,繼續處理
2XX : 成功 - 表示請求已被成功接收,理解,接受
3XX : 重定向 - 要完成請求必須進行更進一步的處理
4XX : 客戶端錯誤 - 請求有語法錯誤或請求無法實現
5XX :服務器端錯誤 - 服務器未能實現合法的請求

列舉常見的幾種狀態碼:
302: Found 重定向,新的url會在resp中的location中返回,瀏覽器會將使用新的url發出新的請求。
304: Not Modified 代表上次的文檔已經被緩存了,使用緩存的文檔

400: Bad Request 客戶端請求與語法錯誤,不能被服務器所理解
403: Forbidden 服務器收到請求,但是拒絕提供服務
404: Not Found 請求的資源不存在,url錯誤

500: Internal Server Error 服務器發生了不可預期的錯誤
503: Server Unavailable 服務器當前不能處理客戶端的請求

Request Headers
Accept: 用來告知客戶端可以處理的內容類型。 /:所有類型
Accept-Encoding:gzip, deflate, br
Accept-Language:請求頭允許客戶端聲明它可以理解的自然語言,并使用Content-Language 應答頭通知客戶端它的選擇。zh-CN,zh;q=0.9,en;q=0.8 (;q=值代表優先順序)
Connection:keep-alive 當頁面請求完成之后,會保持和服務器的鏈接持續有效;close 在完成本次連接之后,斷開連接
Host:客戶端指定自己訪問的web服務器的域名或者IP地址和端口號。localhost:3000
Referer:瀏覽器向web服務器表面自己是從哪個url獲得當前請求的網址。http://localhost:3000/
User-Agent:用來告訴服務器,客戶端使用的操作系統和瀏覽器的名稱和版本信息。Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36

Response Headers
Access-Control-Allow-Origin:允許訪問該資源的外域URL。*:表示不需要攜帶身份憑證請求
Cache-Control:no-store, no-cache, no-transform, must-revalidate, max-age=0
Cache-Control: 這個是非常重要的規則。 這個用來指定Response-Request遵循的緩存機制。各個指令含義如下
Cache-Control:no-store 所有內容都不會被緩存
Cache-Control:no-cache 會被緩存,但是每次都要向服務器評估緩存響應的有效性
Cache-Control:max-age=5 當訪問此網頁后的5秒內再次訪問不會訪問服務器
Cache-Control:min-fresh=5 客戶端在指定的5秒內獲取最新的響應
Cache-Control:max-stale=5 客戶端愿意接收一個已經過期的資源,響應時間不能超過的時間
Cache-Control:only-if-cached 客戶端只接收已經緩存的響應,并且不要向原始服務器檢查是否有更新的拷貝
Cache-Control:Public 可以被任何緩存所緩存
Cache-Control:Private 內容只緩存到私有緩存中
Cache-Control:must-revalidate 緩存必須在使用之前驗證舊資源狀態,并且不可使用過期資源
Cache-Control:no-transform 不得對資源進行轉換或轉變
Connection:keep-alive
Content-Type:告訴客戶端實際返回的內容類型。application/json; charset(字符編碼標準)=UTF-8
Date:消息生成的日期和時間。Mon, 27 Nov 2017 07:40:53 GMT
Transfer-Encoding:指明將傳遞給客戶所采用的編碼形式。chunked數據以一系列分塊的形式進行發送,content-length 在這種情況下不被發送。
Vary:Origin

未完待續...

總結

以上是生活随笔為你收集整理的HTTP 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。