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

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

一、條件請(qǐng)求

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

HTTP條件請(qǐng)求

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

網(wǎng)友評(píng)論