通過調用ApplicationBuilder的擴展方法UseStaticFiles注冊的StaticFileMiddleware中間件幫助我們處理針對文件的請求。對于StaticFileMiddleware處理請求的邏輯,大部分讀者都應該想得到:它根據(jù)請求的地址找到目標文件的路徑,然后利用注冊的ContentTypeProvider根據(jù)路徑解析出與文件內容相匹配的媒體類型,默認情況下得到的媒體類型是根據(jù)目標文件的擴展名解析出來的。解析出來的媒體類型將作為響應報頭Content-Type的值。StaticFileMiddleware中間件最終利用FileProvider讀取文件的內容作為響應消息的主體。實際上,這個中間件在處理請求時比我們想象的要多得多,針對條件請求(Conditional Request)和區(qū)間請求(Range Request)的處理就沒有在上面演示的實例中體現(xiàn)出來。 [本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]
目錄
一、條件請求
HTTP條件請求
針對靜態(tài)文件的條件請求
二、 區(qū)間請求
HTTP區(qū)間請求
針對靜態(tài)文件的區(qū)間請求
一、條件請求
所謂的條件請求就是客戶端在發(fā)送GET請求獲取某種資源的時候,會利用請求報頭攜帶一些條件。服務端處理器在接受到這樣的請求之后,會提取這些條件并驗證目標資源的當前的狀態(tài)是否滿足客戶端指定的條件。在有在這些條件滿足的情況下,目標資源的內容才會真正響應給客戶端。
HTTP條件請求
HTTP條件請求作為一項標準記錄在HTTP規(guī)范中。一般來說,一個GET請求在目標資源存在的情況下總是會返回一個狀態(tài)為“200 OK”的響應,目標資源的內容將直接存放在響應消息的主體部分。如果資源的內容不會輕易改變,我們希望