碼神營地-Http的請求字段和響應字段

更多關於Http相關學習教程請進碼神營地官網:www.icodegod.com

  • 用於HTTP請求中的常用請求頭字段
    Accept:用於高速服務器,客戶機支持的數據類型
    Accept-Charset:用於告訴服務器,客戶機採用的編碼格式
    Accept-Encoding:用於告訴服務器,客戶機支持的數據壓縮格式
    Accept-Language:客戶機的語言環境
    Host:客戶機通過這個頭高速服務器,想訪問的主機名
    If-Modified-Since:客戶機通過這個頭告訴服務器,資源的緩存時間
    Referer:客戶機通過這個頭告訴服務器,它是從哪個資源來訪問服務器的(防盜鏈)
    User-Agent:客戶機通過這個頭告訴服務器,客戶機的軟件環境
    Cookie:客戶機通過這個頭可以向服務器帶數據
    Connection:處理完這次請求後是否斷開連接還是繼續保持連接
    Date:當前時間值

  • HTTP響應
    狀態行:用於描述服務器對請求的處理結果。
    狀態碼:100~199:表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程。
    200~299:表示成功接收請求並已完成整個處理過程。常用200
    300~399:爲完成請求,客戶需進一步細化請求。例如:請求的資源已經移動一個新地址、常用302(意味着你請求我,我讓你去找別人),307和304(我不給你這個資源,自己拿緩存)
    400~499:客戶端的請求有錯誤,常用404(意味着你請求的資源在web服務器中沒有)403(服務器拒絕訪問,權限不夠)
    500~599:服務器端出現錯誤,常用500
    多個響應頭:響應頭用於描述服務器的基本信息,以及數據的描述,服務器通過這些數據的描述信息,可以通知客戶端如何處理等一會兒它回送的數據。
    Location:這個頭配合302狀態碼使用,用於告訴客戶找誰。
    Server:服務器通過這個頭告訴瀏覽器服務器的類型。
    Content-Encoding:服務器通過這個頭告訴瀏覽器數據的壓縮格式。
    Content-Length:服務器通過這個頭告訴瀏覽器回送數據的長度
    Content-Type:服務器通過這個頭告訴瀏覽器回送數據的類型
    Last-Modified:告訴瀏覽器當前資源的最後緩存時間
    Refresh:告訴瀏覽器隔多久刷新一次
    Content-Disposition:告訴瀏覽器以下載方式打開數據
    Transfer-Encoding:告訴瀏覽器數據的傳送格式
    ETag:緩存相關的頭

  • ········三種禁止瀏覽器緩存的頭字段:
    Expires:告訴瀏覽器把回送的資源緩存多長時間 -1或0則是不緩存
    Cache-Control:no-cache
    Pragma:no-cache
    服務器通過以上兩個頭,也就是控制瀏覽器不要緩存數據
    實體內容:代表服務器向客戶端回送的數據

  • http狀態碼及表示的狀態信息
    200(正常)
    表示一切正常,返回的是正常請求結果。
    302/307(臨時重定向)
    指出被請求的文檔已被臨時移動到別處,此文檔的新的URL在Location響應頭中給出。
    304(未修改)
    表示客戶機緩存的版本是最新的,客戶機應該繼續使用它。
    403(禁止)
    服務器理解客戶端請求,但拒絕處理它。通常由於服務器上文件或目錄的權限設置所致。
    404(找不到)
    服務器上不存在客戶機所請求的資源。
    500(內部服務器錯誤)
    服務器端的CGI、ASP、JSP等程序發生錯誤。

  • 怎麼實現http的斷點續傳
    要實現斷點續傳的功能,通常都需要客戶端記錄下當前的下載進度,並在需要續傳的時候通知服務端本次需要下載的內容片段。
    HTTP1.1協議(RFC2616)中定義了斷點續傳相關的HTTP頭 RangeContent-Range字段,一個最簡單的斷點續傳實現大概如下:

    1.客戶端下載一個1024K的文件,已經下載了其中256K
    2.網絡中斷,客戶端請求續傳,因此需要在HTTP頭中申明本次需要續傳的片段:
    Range:bytes=256000-
    這個頭通知服務端從文件的256K位置開始傳輸文件
    3.服務端收到斷點續傳請求,從文件的256K位置開始傳輸,並且在HTTP頭中增加:
    Content-Range:bytes 256000-/1024000
    並且此時服務端返回的HTTP狀態碼應該是206,而不是200。

終端在發起續傳請求時應該在HTTP頭中申明If-Match 或者If-Modified-Since 字段,幫助服務端判別文件變化。

另外RFC2616中同時定義有一個If-Range頭,終端如果在續傳是使用If-Range。If-Range中的內容可以爲最初收到的ETag頭或者是Last-Modfied中的最後修改時候。服務端在收到續傳請求時,通過If-Range中的內容進行校驗,校驗一致時返回206的續傳回應,不一致時服務端則返回200迴應,迴應的內容爲新的文件的全部數據。

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