通過調(diào)用ApplicationBuilder的擴(kuò)展方法UseStaticFiles注冊的StaticFileMiddleware中間件幫助我們處理針對文件的請求。對于StaticFileMiddleware處理請求的邏輯,大部分讀者都應(yīng)該想得到:它根據(jù)請求的地址找到目標(biāo)文件的路徑,然后利用注冊的ContentTypeProvider根據(jù)路徑解析出與文件內(nèi)容相匹配的媒體類型,默認(rèn)情況下得到的媒體類型是根據(jù)目標(biāo)文件的擴(kuò)展名解析出來的。解析出來的媒體類型將作為響應(yīng)報(bào)頭Content-Type的值。StaticFileMiddleware中間件最終利用FileProvider讀取文件的內(nèi)容作為響應(yīng)消息的主體。實(shí)際上,這個中間件在處理請求時(shí)比我們想象的要多得多,針對條件請求(Conditional Request)區(qū)間請求(Range Request)的處理就沒有在上面演示的實(shí)例中體現(xiàn)出來。 [本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]

目錄
一、條件請求
    HTTP條件請求
    針對靜態(tài)文件的條件請求
二、 區(qū)間請求
    HTTP區(qū)間請求
    針對靜態(tài)文件的區(qū)間請求

一、條件請求

所謂的條件請求就是客戶端在發(fā)送GET請求獲取某種資源的時(shí)候,會利用請求報(bào)頭攜帶一些條件。服務(wù)端處理器在接受到這樣的請求之后,會提取這些條件并驗(yàn)證目標(biāo)資源的當(dāng)前的狀態(tài)是否滿足客戶端指定的條件。在有在這些條件滿足的情況下,目標(biāo)資源的內(nèi)容才會真正響應(yīng)給客戶端。

HTTP條件請求

HTTP條件請求作為一項(xiàng)標(biāo)準(zhǔn)記錄在HTTP規(guī)范中。一般來說,一個GET請求在目標(biāo)資源存在的情況下總是會返回一個狀態(tài)為“200 OK”的響應(yīng),目標(biāo)資源的內(nèi)容將直接存放在響應(yīng)消息的主體部分。如果資源的內(nèi)容不會輕易改變,我們希望