HTTP常見頭域

zzz紫川發表於2016-12-02

  近期沒需求,也沒什麼心情去看書,就總結一下自己以前看的HTTP協議基礎內容吧。(會很亂,可能不適合一點都沒接觸過HTTP協議的人觀看)

一、HTTP Request header

1、Cache頭域

if-Modified-since:快取

if-None-Match:可提高效能(在Response中新增ETag資訊,客戶端再次請求資源,Request中加入if-None-Match(ETag的值),伺服器驗證ETag,若沒改變返回狀態碼304,有改變,返回狀態碼200)

Pragma:防止頁面被快取

Cache-Control:Response—Request遵循的快取機制

  public:可以被任何快取所快取

  private:內容只快取在私有快取中

  no-cache:所有內容都不會被快取

2、Client頭域

Accept:瀏覽器可以接受的檔案型別(Accept:text/html 表示瀏覽器可接受伺服器返回的檔案型別為text/html)

Accept-Encodig:指定壓縮方法,是否支援壓縮,支援什麼壓縮方法(gzip、deflate)

Accept-Language:瀏覽器申明自己的接收語言

User-Accept:告知伺服器客戶端使用的作業系統與瀏覽器的名稱和版本

Accept-chareset:瀏覽器申明自己接收的字符集。如gb2312,UTF_8

3、Cookie/Login頭域

Cookie:將cookie的值傳送給伺服器

4、Entity頭域

Content-Length:傳送給HTTP伺服器的資料長度

Content-Type:決定檔案接收方將以什麼形式、什麼編碼讀取此檔案

5、Miscellaneous頭域

Referer:提供了Request的上下文資訊,告訴伺服器我是從哪個連結過來的

A------>B(B的伺服器從Referer中統計有多少使用者是從A過來的)

6、Transport頭域

connection:Keep—alive            TCP連線不會關閉

connection:close                     一個Request完成後,TCP連線關閉

7、Host:傳送請求時,該報頭域是必需的。主要用於指定被請求資源的Internet主機和埠號,通常從HTTP URL 中提取出來

 

二、HTTP Response header

1、Cache頭域

Date:生成訊息的具體時間和日期

Expires:瀏覽器在指定過期時間內使用本地快取

2、Cookie/Login頭域

P3P:使用者跨域設定cookie,可以解決iframe跨域訪問cookie的問題

Set-Cookie:重要的header,用於把cookie傳送到客戶端瀏覽器,每一個寫入cookie都會生成一個set-cookie

3、Entity頭域

ETag:與if-None-Match配合使用

Last-Modified:用於指示資源的最後修改日期和時間

Content-Type:Web伺服器告知瀏覽器自己響應物件的型別和字符集

Content-Length:指明實體正文長度,以位元組方式儲存的十進位制數字表示。在資料下行中,要預先在伺服器中快取所有資料,然後所有資料一併發給客戶端

Content-Encoding:Web伺服器表明自己用了什麼壓縮方式(gzip、deflate)壓縮響應中的物件

Content-Language:伺服器告知瀏覽器自己響應的物件語言

4、Miscellaneous頭域

Server:指明HTTP伺服器的軟體資訊

X-Powered-By:表明網站是用什麼技術開發的

X-AspNet-Version:如果網站是用Asp/Net開發的,這個header用來表明Asp/Net的版本

5、Transport頭域

connection:Keep—alive            TCP連線不會關閉

connection:close                     一個Request完成後,TCP連線關閉

6、Location頭域

Location:用於重定向一個新的位置,包括新的URL地址

 

三、網路分層(這個是順手加上)

  下層只會向上層提供服務,但不會從上層獲取服務。

1、OSI模型(從低到高)

物理層---->資料鏈路層---->網路層---->傳輸層---->會話層---->表示層---->應用層

2、TCP/IP模型(從低到高)

網路介面層------>網路層(IP)------>傳輸層(TCP、UDP)------>應用層(HTTP/FTP等協議)

3、實際應用中的因特網協議棧

物理層---->鏈路層---->網路層---->傳輸層---->應用層

 

四、HTTP認證過程

1、客戶端傳送HTTP Request給伺服器;

2、Request中未包含Authorization header,伺服器會返回一個401錯誤給客戶端,且在Response中的header“www-Authenticate”中新增資訊;

3、客戶端將使用者名稱和密碼以base64加密後,放在Authorization中傳送給伺服器,認證成功;

4、伺服器將Authorization header中的使用者名稱和密碼去除,進行驗證。如果驗證通過,將根據請求傳送資源給客戶端;

  HTTP OAuth認證:OAuth對於http來說,就是放在Authorization header中的不是使用者名稱密碼,而是一個token(令牌)。

  客戶端的使用:客戶端若要跟“使用基本認證的網站”進行互動,將使用者名稱密碼載入Authorization header中即可。

相關文章