HTTP報文是在HTTP應用程序之間發送的數據塊。這些數據塊以一些文本形式的元信息(meta-information)開頭,這些信息描述了報文的內容及含義,後面跟着可選的數據部分。這些報文在客戶端、服務器和代理之間流動。術語"流入"、"流出"、"上游"及"下游"都是用來描述報文方向的。
程序員
HTTP使用術語流入(inbound)和流出(outbound)來描述事務處理(transaction)的方向。報文流入源端服務器,工做完成以後,會流回用戶的Agent代理中。無論是請求報文仍是響應報文,全部報文都會向下游(downstream)流動。全部報文的發送者都在接收者的上游(upstream)。
瀏覽器
HTTP報文是簡單的格式化數據塊。每條報文都包含一條來自客戶端的請求,或者一條來自服務器的響應。它們由三個部分組成:對報文進行描述的起始行(start line)、包含屬性的首部(header)塊,以及可選的、包含數據的主體(body)部分。
緩存
起始行和首部就是由行分隔的ASCII文本。每行都以一個由兩個字符組成的行終止序列做爲結束,其中包括一個回車符和一個換行符。這個行終止序列能夠寫作CRLF。須要指出的是,儘管HTTP規範中說明應該用CRLF來表示行終止,但穩健的應用程序也應該接受單個換行符做爲行的終止。有些老的,或不完整的HTTP應用程序並不老是既發送回車符,又發送換行符。實體的主體或報文的主體(或者就稱爲主體)是一個可選的數據塊。與起始行和首部不一樣的是,主體中能夠包含文本或二進制數據,也能夠爲空。
安全
請求和響應報文之間的區別:全部的HTTP報文均可以分爲兩類:請求報文(request message)和響應報文(response message)。請求報文會向Web服務器請求一個動做。響應報文會將請求的結果返回給客戶端。請求和響應報文的基本報文結構相同。
服務器
# 請求報文 <method> <request-URL> <version> <headers> <entity-body> # 響應報文 <version> <status> <reason-phrase> <headers> <entity-body> # 只有起始行的語法有所不一樣
注意:一組HTTP首部老是應該以一個空行(僅CRLF)結束,甚至即便沒有首部和實體的主體部分也應如此。但因爲歷史緣由,不少客戶端和服務器都在沒有實體的主體部分時,(錯誤地)省略了最後的CRLF。爲了與這些流行但不符合規則的實現進行互通,客戶端和服務器都應該接受那些沒有最後那個CRLF的報文。
cookie
全部的HTTP報文都以一個起始行做爲開始。請求報文的起始行說明了要作些什麼。響應報文的起始行說明發生了什麼。
工具
跟在起始行後面的就是零個、一個或多個HTTP首部字段。HTTP首部字段向請求和響應報文中添加了一些附加信息。本質上來講,它們只是一些鍵/值對的列表。
測試
首部分類:HTTP規範定義了幾種首部字段。應用程序也能夠隨意發明本身所用的首部。每一個HTTP首部都有一種簡單的語法:名字後面跟着冒號(:),而後跟上可選的空格,再跟上字段值,最後是一個CRLF。HTTP 首部能夠分爲如下幾類。
優化
首部延續行:將長的首部行分爲多行能夠提升可讀性,多出來的每行前面至少要有一個空格或製表符(tab)。
ui
HTTP報文的第三部分是可選的實體主體部分。實體的主體是HTTP報文的負荷。就是HTTP要傳輸的內容。HTTP報文能夠承載不少類型的數字數據:圖片、視頻、HTML文檔、軟件應用程序、信用卡事務、電子郵件等。
方法 | 描述 | 是否包含主體 |
---|---|---|
GET | 從服務器獲取一份文檔 | 否 |
HEAD | 只從服務器獲取文檔的首部 | 否 |
POST | 向服務器發送須要處理的數據 | 是 |
PUT | 將請求的主體部分存儲在服務器上 | 是 |
TRACE | 對可能通過代理服務器傳送到服務器上去的報文進行追蹤 | 否 |
OPTIONS | 決定能夠在服務器上執行哪些方法 | 否 |
DELETE | 從服務器上刪除一份文檔 | 否 |
注意:並非每一個服務器都實現了全部的方法。若是一臺服務器要與"HTTP 1.1"兼容,那麼只要爲其資源實現GET方法和HEAD方法就能夠了。即便服務器實現了全部這些方法,這些方法的使用極可能也是受限的。例如,支持 DELETE 方法或 PUT 方法的服務器可能並不但願任何人都可以刪除或存儲資源。這些限制一般都是在服務器的配置中進行設置的,所以會隨着站點和服務器的不一樣而有所不一樣。
安全的方法:HTTP 定義了一組被稱爲安全方法的方法。GET方法和HEAD方法都被認爲是安全的,這就意味着使用GET或HEAD方法的HTTP請求都不會產生什麼動做。不產生動做,在這裏意味着HTTP請求不會在服務器上產生什麼結果。安全方法並不必定是什麼動做都不執行的(實際上,這是由Web開發者決定的)。使用安全方法的目的就是當使用可能引起某一動做的不安全方法時,容許HTTP應用程序開發者通知用戶。
HEAD:HEAD方法與GET方法的行爲很相似,但服務器在響應中只返回首部。不會返回實體的主體部分。這就容許客戶端在未獲取實際資源的狀況下,對資源的首部進行檢查。服務器開發者必須確保返回的首部與GET請求所返回的首部徹底相同。使用HEAD,能夠:
擴展方法:HTTP被設計成字段可擴展的,這樣新的特性就不會使老的軟件失效了。擴展方法指的就是沒有在"HTTP/1.1"規範中定義的方法。服務器會爲它所管理的資源實現一些HTTP服務,這些方法爲開發者提供了一種擴展這些HTTP服務能力的手段。並非全部的擴展方法都是在正式規範中定義的,認識到這一點很重要。若是你定義了一個擴展方法,極可能大部分HTTP應用程序都沒法理解。一樣,你的HTTP應用程序也可能會遇到一些其餘應用程序在用的,而它並不理解的擴展方法。在這些狀況下,最好對擴展方法寬容一些。若是可以在不破壞端到端行爲的狀況下將帶有未知方法的報文傳遞給下游服務器的話,代理應嘗試傳遞這些報文。若是可能破壞端到端行爲,則應以"501 Not Implemented(沒法實現)"狀態碼進行響應。最好按慣例"對所發送的內容要求嚴一點,對所接收的內容寬容一些"來處理擴展方法(以及通常的HTTP擴展)。
總體範圍 | 已定義範圍 | 分類 |
---|---|---|
100~199 | 100~101 | 信息提示 |
200~299 | 200~206 | 成功 |
300~399 | 300~305 | 重定向 |
400~499 | 400~415 | 客戶端錯誤 |
500~599 | 500~505 | 服務器錯誤 |
HTTP狀態碼被分紅了五大類。狀態碼爲客戶端提供了一種理解事務處理結果的便捷方式。儘管並無實際的規範對緣由短語的確切文本進行說明。
HTTP/1.1 向協議中引入了信息性狀態碼。這些狀態碼相對較新,關於其複雜性和感知價值存在一些爭議。
狀態碼 | 緣由短語 | 含義 |
---|---|---|
100 | Continue | 說明收到了請求的初始部分,請客戶端繼續。發送了這個狀態碼以後,服務器在收到請求以後必須進行響應。 |
101 | Switching Protocols | 說明服務器正在根據客戶端的指定,將協議切換成Update首部所列的協議 |
"100 Continue"狀態碼尤爲讓人糊塗。它的目的是對這樣的狀況進行優化:HTTP客戶端應用程序有一個實體的主體部分要發送給服務器,但但願在發送以前查看一下服務器是否會接受這個實體。這可能會給HTTP程序員帶來一些困擾,所以在這裏進行了比較詳細(它如何與客戶端、服務器和代理進行通訊)的討論。
客戶端發起請求時,這些請求一般都是成功的。服務器有一組用來表示成功的狀態碼,分別對應於不一樣類型的請求。
狀態碼 | 緣由短語 | 含義 |
---|---|---|
200 | OK | 請求沒問題,實體的主體部分包含了所請求的資源。 |
201 | Created | 用於建立服務器對象的請求(好比,PUT)。響應的實體主體部分中應該包含各類引用了已建立的資源的URL,Location首部包含的則是最具體的引用。服務器必須在發送這個狀態碼以前建立好對象。 |
202 | Accepted | 請求已被接受,但服務器還未對其執行任何動做。不能保證服務器會完成這個請求;這只是意味着接受請求時,它看起來是有效的。服務器應該在實體的主體部分包含對請求狀態的描述,或許還應該有對請求完成時間的估計(或者包含一個指針,指向能夠獲取此信息的位置)。 |
203 | Non-Authoritative Information | 實體首部包含的信息不是來自於源端服務器,而是來自資源的一份副本。若是中間節點上有一份資源副本,但沒法或者沒有對它所發送的與資源有關的元信息(首部)進行驗證,就會出現這種狀況。 這種響應碼並非非用不可的;若是實體首部來自源端服務器,響應爲200狀態的應用程序就能夠將其做爲一種可選項使用。 |
204 | No Content | 響應報文中包含若干首部和一個狀態行,但沒有實體的主體部分。主要用於在瀏覽器不轉爲顯示新文檔的狀況下,對其進行更新(好比刷新一個表單頁面)。 |
205 | Reset Content | 另外一個主要用於瀏覽器的代碼。負責告知瀏覽器清除當前頁面中的全部HTML表單元素。 |
206 | Partial Content | 成功執行了一個部分或Range(範圍)請求。客戶端能夠經過一些特殊的首部來獲取部分或某個範圍內的文檔——這個狀態碼就說明範圍請求成功了。206響應中必須包含Content-Range、Date以及ETag或Content-Location首部。 |
重定向狀態碼要麼告知客戶端使用替代位置來訪問他們所感興趣的資源,要麼就提供一個替代的響應而不是資源的內容。若是資源已被移動,可發送一個重定向狀態碼和一個可選的Location首部來告知客戶端資源已被移走,以及如今能夠在哪裏找到它。這樣,瀏覽器就能夠在不打擾使用者的狀況下,透明地轉入新的位置了。能夠經過某些重定向狀態碼對資源的應用程序本地副本與源端服務器上的資源進行驗證。好比,HTTP 應用程序能夠查看其資源的本地副本是否仍然是最新的,或者在源端服務器上資源是否被修改過。總之,在對那些包含了重定向狀態碼的非 HEAD 請求進行響應時,最好要包含一個實體,並在實體中包含描述信息和指向(多個)重定向URL的連接。
狀態碼 | 緣由短語 | 含義 |
---|---|---|
300 | Multiple Choices | 客戶端請求一個實際指向多個資源的URL時會返回這個狀態碼,好比服務器上有某個HTML文檔的英語和法語版本。返回這個代碼時會帶有一個選項列表;這樣用戶就能夠選擇他但願使用的那一項了。有多個版本可用時,客戶端須要溝通解決。服務器能夠在Location首部包含首選URL。 |
301 | Moved Permanently | 在請求的URL已被移除時使用。響應的Location首部中應該包含資源如今所處的URL。 |
302 | Found | 與301狀態碼相似;可是,客戶端應該使用Location首部給出的URL來臨時定位資源。未來的請求仍應使用老的URL。 |
303 | See Other | 告知客戶端應該用另外一個URL來獲取資源。新的URL位於響應報文的Location首部。其主要目的是容許POST請求的響應將客戶端定向到某個資源上去。 |
304 | Not Modified | 客戶端能夠經過所包含的請求首部,使其請求變成有條件的。若是客戶端發起了一個條件GET請求,而最近資源未被修改的話,就能夠用這個狀態碼來講明資源未被修改。帶有這個狀態碼的響應不該該包含實體的主體部分。 |
305 | Use Proxy | 用來講明必須經過一個代理來訪問資源;代理的位置由Location首部給出。很重要的一點是,客戶端是相對某個特定資源來解析這條響應的,不能假定全部請求,甚至全部對持有所請求資源的服務器的請求都經過這個代理進行。若是客戶端錯誤地讓代理介入了某條請求,可能會引起破壞性的行爲,並且會形成安全漏洞。 |
307 | Temporary Redirect | 與301狀態碼相似;但客戶端應該使用Location首部給出的URL來臨時定位資源。未來的請求應該使用老的URL。 |
30二、303和307狀態碼之間存在一些交叉。這些狀態碼的用法有着細微的差異,大部分差異都源於"HTTP/1.0"和"HTTP/1.1"應用程序對這些狀態碼處理方式的不一樣。當"HTTP/1.0"客戶端發起一個POST請求,並在響應中收到302重定向狀態碼時,它會接受Location首部的重定向URL,並向那個URL發起一個GET請求(而會像原始請求中那樣發起POST請求)。"HTTP/1.0"服務器但願"HTTP/1.0"客戶端這麼作——若是"HTTP/1.0"服務器收到來自"HTTP/1.0"客戶端的POST請求以後發送了302狀態碼,服務器就指望客戶端可以接受重定向URL,並向重定向的URL發送一個GET請求。問題出在"HTTP/1.1"。"HTTP/1.1"規範使用303狀態碼來實現一樣的行爲(服務器發送303狀態碼來重定向客戶端的POST請求,在它後面跟上一個GET請求)。爲了避開這個問題,"HTTP/1.1"規範指出,對於"HTTP/1.1"客戶端,用307狀態碼取代302狀態碼來進行臨時重定向。這樣服務器就能夠將302狀態碼保留起來,爲"HTTP/1.0"客戶端使用了。這樣一來,服務器要選擇適當的重定向狀態碼放入重定向響應中發送,就須要查看客戶端的HTTP版本了。
有時客戶端會發送一些服務器沒法處理的東西,好比格式錯誤的請求報文,或者最多見的是,請求一個不存在的URL。瀏覽網頁時,咱們都看到過臭名昭著的"404 Not Found"錯誤碼——這只是服務器在告訴咱們,它對咱們請求的資源一無所知。不少客戶端錯誤都是由瀏覽器來處理的,甚至不會打擾到你。只有少許錯誤,好比 404,仍是會穿過瀏覽器來到用戶面前。
狀態碼 | 緣由短語 | 含義 |
---|---|---|
400 | Bad Request | 用於告知客戶端它發送了一個錯誤的請求。 |
401 | Unauthorized | 與適當的首部一同返回,在這些首部中請求客戶端在獲取對資源的訪問權以前,對本身進行認證。 |
403 | Forbidden | 用於說明請求被服務器拒絕了。若是服務器想說明爲何拒絕請求,能夠包含實體的主體部分來對緣由進行描述。但這個狀態碼一般是在服務器不想說明拒絕緣由的時候使用的。 |
404 | Not Found | 用於說明服務器沒法找到所請求的URL。一般會包含一個實體,以便客戶端應用程序顯示給用戶看。 |
405 | Method Not Allowed | 發起的請求中帶有所請求的URL不支持的方法時,使用此狀態碼。應該在響應中包含Allow首部,以告知客戶端對所請求的資源可使用哪些方法。 |
406 | Not Acceptable | 客戶端能夠指定參數來講明它們願意接收什麼類型的實體。服務器沒有與客戶端可接受的URL相匹配的資源時,使用此代碼。一般,服務器會包含一些首部,以便客戶端弄清楚爲何請求沒法知足。 |
407 | Proxy Authentication Required | 與401狀態碼相似,但用於要求對資源進行認證的代理服務器。 |
408 | Request Timeout | 若是客戶端完成請求所花的時間太長,服務器能夠回送此狀態碼,並關閉鏈接。超時時長隨服務器的不一樣有所不一樣,但一般對全部的合法請求來講,都是夠長的。 |
409 | Conflict | 用於說明請求可能在資源上引起的一些衝突。服務器擔憂請求會引起衝突時,能夠發送此狀態碼。響應中應該包含描述衝突的主體。 |
410 | Gone | 與404相似,只是服務器曾經擁有過此資源。主要用於Web站點的維護,這樣服務器的管理者就能夠在資源被移除的狀況下通知客戶端了。 |
411 | Length Required | 服務器要求在請求報文中包含Content-Length首部時使用。 |
412 | Precondition Failed | 客戶端發起了條件請求,且其中一個條件失敗了的時候使用。客戶端包含了Expect首部時發起的就是條件請求。 |
413 | Request Entity Too Large | 客戶端發送的實體主體部分比服務器可以或者但願處理的要大時,使用此狀態碼。 |
414 | Request URI Too Long | 客戶端所發請求中的請求URL比服務器可以或者但願處理的要長時,使用此狀態碼。 |
415 | Unsupported Media Type | 服務器沒法理解或沒法支持客戶端所發實體的內容類型時,使用此狀態碼。 |
416 | Requested Range Not Satisfiable | 請求報文所請求的是指定資源的某個範圍,而此範圍無效或沒法知足時,使用此狀態碼 |
417 | Expectation Failed | 請求的Expect請求首部包含了一個指望,但服務器沒法知足此指望時,使用此狀態碼。若是代理或其餘中間應用程序有確切證聽說明源端服務器會爲某請求產生一個失敗的指望,就能夠發送這個響應狀態碼。 |
有時客戶端發送了一條有效請求,服務器自身卻出錯了。這多是客戶端碰上了服務器的缺陷,或者服務器上的子元素,好比某個網關資源,出了錯。代理嘗試着表明客戶端與服務器進行交流時,常常會出現問題。代理會發布5XX服務器錯誤狀態碼來描述所遇到的問題。
狀態碼 | 緣由短語 | 含義 |
---|---|---|
500 | Internal Server Error | 服務器遇到一個妨礙它爲請求提供服務的錯誤時,使用此狀態碼。 |
501 | Not Implemented | 客戶端發起的請求超出服務器的能力範圍(好比,使用了服務器不支持的請求方法)時,使用此狀態碼。 |
502 | Bad Gateway | 做爲代理或網關使用的服務器從請求響應鏈的下一條鏈路上收到了一條僞響應(好比,它沒法鏈接到其父網關)時,使用此狀態碼。 |
503 | Service Unavailable | 用來講明服務器如今沒法爲請求提供服務,但未來能夠。若是服務器知道何時資源會變爲可用的,能夠在響應中包含一個Retry-After首部。 |
504 | Gateway Timeout | 與狀態碼408相似,只是這裏的響應來自一個網關或代理,它們在等待另外一服務器對其請求進行響應時超時了。 |
505 | HTTP Version Not Supported | 服務器收到的請求使用了它沒法或不肯支持的協議版本時,使用此狀態碼。有些服務器應用程序會選擇不支持協議的早期版本。 |
首部和方法配合工做,共同決定了客戶端和服務器能作什麼事情。在請求和響應報文中均可以用首部來提供信息,有些首部是某種報文專用的,有些首部則更通用一些。能夠將首部分爲五個主要的類型。
有些首部提供了與報文相關的最基本的信息,它們被稱爲通用首部。不論報文是何類型,都爲其提供一些有用信息。
首部 | 描述 |
---|---|
Connection | 容許客戶端和服務器指定與請求/響應鏈接有關的選項 |
Date | 提供日期和時間標誌,說明報文是什麼時間建立的 |
MIME-Version | 給出了發送端使用的MIME版本 |
Trailer | 若是報文采用了分塊傳輸編碼(chunked transfer encoding)方式,就能夠用這個首部列出位於報文拖掛(trailer)部分的首部集合 |
Transfer-Encoding | 告知接收端爲了保證報文的可靠傳輸,對報文采用了什麼編碼方式 |
Update | 給出了發送端可能想要"升級"使用的新版本或協議 |
Via | 顯示了報文通過的中間節點(代理、網關) |
首部 | 描述 |
---|---|
Cache-Control | 用於隨報文傳送緩存指示 |
Pragma | 另外一種隨報文傳送指示的方式,但並不專用於緩存 |
請求首部是隻在請求報文中有意義的首部。用於說明是誰或什麼在發送請求、請求源自何處,或者客戶端的喜愛及能力。服務器能夠根據請求首部給出的客戶端信息,試着爲客戶端提供更好的響應。
首部 | 描述 |
---|---|
Client-IP | 提供了運行客戶端的機器的IP地址 |
From | 提供了客戶端用戶的E-mail地址 |
Host | 給出了接收請求的服務器的主機名和端口號 |
Referer | 提供了包含當前請求URI的文檔的URL |
UA-Color | 提供了與客戶端顯示器的顯示顏色有關的信息 |
UA-CPU6 | 給出了客戶端CPU的類型或製造商 |
UA-Disp | 提供了與客戶端顯示器(屏幕)能力有關的信息 |
UA-OS | 給出了運行在客戶端機器上的操做系統名稱及版本 |
UA-Pixels | 提供了客戶端顯示器的像素信息 |
User-Agent | 將發起請求的應用程序名稱告知服務器 |
首部 | 描述 |
---|---|
Accept | 告訴服務器可以發送哪些媒體類型 |
Accept-Charset | 告訴服務器可以發送哪些字符集 |
Accept-Encoding | 告訴服務器可以發送哪些編碼方式 |
Accept-Language | 告訴服務器可以發送哪些語言 |
TE | 告訴服務器可使用哪些擴展傳輸編碼 |
首部 | 描述 |
---|---|
Expect | 容許客戶端列出某請求所要求的服務器行爲 |
If-Match | 若是實體標記與文檔當前的實體標記相匹配,就獲取這份文檔 |
If-Modified-Since | 除非在某個指定的日期以後資源被修改過,不然就限制這個請求 |
If-None-Match | 若是提供的實體標記與當前文檔的實體標記不相符,就獲取文檔 |
If-Range | 容許對文檔的某個範圍進行條件請求 |
If-Unmodified-Since | 除非在某個指定日期以後資源沒有被修改過,不然就限制這個請求 |
Range | 若是服務器支持範圍請求,就請求資源的指定範圍 |
首部 | 描述 |
---|---|
Authorization | 包含了客戶端提供給服務器,以便對其自身進行認證的數據 |
Cookie | 客戶端用它向服務器傳送一個令牌——它並非真正的安全首部,但確實隱含了安全功能 |
Cookie2 | 用來講明請求端支持的cookie版本 |
首部 | 描述 |
---|---|
Max-Forward | 在通往源端服務器的路徑上,將請求轉發給其餘代理或網關的最大次數——與TRACE方法一同使用 |
Proxy-Authorization | 與Authorization首部相同,但這個首部是在與代理進行認證時使用的 |
Proxy-Connection | 與Connection首部相同,但這個首部是在與代理創建鏈接時使用的 |
<p>響應報文有本身的響應首部集。響應首部爲客戶端提供了一些額外信息,好比誰在發送響應、響應者的功能,甚至與響應相關的一些特殊指令。這些首部有助於客戶端處理響應,並在未來發起更好的請求。</p>
首部 | 描述 |
---|---|
Age | 響應持續時間(從最初建立開始) |
Public | 服務器爲其資源支持的請求方法列表 |
Retry-After | 若是資源不可用的話,在此日期或時間重試 |
Server | 服務器應用程序軟件的名稱和版本 |
Title | 對HTML文檔來講,就是HTML文檔的源端給出的標題 |
Warning | 比緣由短語中更詳細一些的警告報文 |
首部 | 描述 |
---|---|
Accept-Ranges | 對此資源來講,服務器可接受的範圍類型 |
Vary | 服務器查看的其餘首部的列表,可能會使響應發生變化;也就是說,這是一個首部列表,服務器會根據這些首部的內容挑選出最適合的資源版本發送給客戶端 |
首部 | 描述 |
---|---|
Proxy-Authenticate | 來自代理的對客戶端的質詢列表 |
Set-Cookie | 不是真正的安全首部,但隱含有安全功能;能夠在客戶端設置一個令牌,以便服務器對客戶端進行標識 |
Set-Cookie2 | 與Set-Cookie相似,""RFC 2965"Cookie定義 |
WWW-Authenticate | 來自服務器的對客戶端的質詢列表 |
<p>有不少首部能夠用來描述HTTP報文的負荷。因爲請求和響應報文中均可能包含實體部分,因此在這兩種類型的報文中均可能出現這些首部。實體首部提供了有關實體及其內容的大量信息,從有關對象類型的信息,到可以對資源使用的各類有效的請求方法。總之,實體首部能夠告知報文的接收者它在對什麼進行處理。</p>
首部 | 描述 |
---|---|
Allow | 列出了能夠對此實體執行的請求方法 |
Location | 告知客戶端實體實際上位於何處;用於將接收端定向到資源的(多是新的)位置(URL)上去 |
首部 | 描述 |
---|---|
Content-Base | 解析主體中的相對URL時使用的基礎URL |
Content-Encoding | 對主體執行的任意編碼方式 |
Content-Language | 理解主體時最適宜使用的天然語言 |
Content-Length | 主體的長度或尺寸 |
Content-Location | 資源實際所處的位置 |
Content-MD5 | 主體的MD5校驗和 |
Content-Range | 在整個資源中此實體表示的字節範圍 |
Content-Type | 這個主體的對象類型 |
首部 | 描述 |
---|---|
ETag | 與此實體相關的實體標記 |
Expires | 實體再也不有效,要從原始的源端再次獲取此實體的日期和時間 |
Last-Modified | 這個實體最後一次被修改的日期和時間 |