亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

WebCore中的http響應信息維護

系統 2317 0

摘要:WebCore源代碼分析,WebKit,dlmu2001,http模塊,http響應,ResourceResponse,ResourceHandle,ResourceRequest,DocumentLoader,瀏覽器內核,curl

在“WebCore中的http請求信息維護”中,我們曾經簡單介紹過http的原理,并分析了WebCore中對請求信息的維護,這篇文章則分析WebCore對http響應信息的維護。

1. 作用

ResourceResponse負責維護服務器返回的http響應的信息,包括http的頭部、體部及其它信息。

2. ResourceResponse類分析

ResourceResponse繼承自ResourceResponseBase,大部分功能在ResourceResponseBase類中實現。

FastAllocBase—>ResourceResonseBase—>ResourceResponse

ResourceResponseBase類成員變量一般由http響應的信息轉換而來:

      KURL m_url; String m_mimeType;
      
        long
      
      
        long
      
      m_expectedContentLength; String m_textEncodingName; String m_suggestedFilename;
      
        int
      
      m_httpStatusCode; String m_httpStatusText; HTTPHeaderMap m_httpHeaderFields; time_t m_lastModifiedDate; bool m_wasCached : 1;
      
        unsigned
      
      m_connectionID; bool m_connectionReused : 1; RefPtr<ResourceLoadTiming> m_resourceLoadTiming; bool m_isNull : 1;
    

響應頭部以HTTPHeaderMap的結構存儲,要查找某一個頭部的值,可以參考FrameLoader::didBeginDocument函數中"X-DNS-Prefetch-Control"擴展頭部的讀取。

m_suggestedFilename用來設置下載的時候默認的文件名(擴展頭部Content-Disposition指定)。

m_textEncodingName用來存儲Charset頭部,在“Webcore中文本資源編解碼”一文中,我們介紹過文本編碼的確定方式,這里是http頭部指定的方式。

3. ResourceResponse類的維護及上下文

一個html幀對應于一個DocumentLoader,而一個html幀中,會有一個html資源,多個派生資源(image,css,object等),所以每個DocumentLoader維護一個m_response,對應于html資源,維護一個ResourceResponse數組(ResponseVector m_responses),對應于派生資源(SubresourceLoader)。

類DocumentLoader中既包含ResourceRequest對象,也包含ResourceResponse對象。DocumentLoader中封裝了部分ResourceRequest和ResourceResponse的接口。

ResourceLoader類中也維護了ResourceResponse對象,在調用didReceiveResponse接口的時候會設置這個對象。

ResourceHandle類維護了ResourceResonse類對象,這是直接同http實現(curl)打交道的類,如curl的headCallback里面,會把相應的頭部信息設置到這個對象中。

下面是一些函數調用系列圖:

      
      
        html頁面http請求回調系列
      
    
      
      
        派生資源http請求回調系列
      
      
4. 其它

MainResourceLoader::willSendRequest發起請求前會根據ResourceResponse的statusCode判斷是否是重定向請求,如果是,設置緩存策略為ReloadIgnoringCacheData

當OFFLINE_WEB_APPLICATIONS宏打開,啟用離線web應用功能的時候,如果服務器返回4**或者5**的響應,就載入對應的Fallback Resource(這里4**是否進行進一步分類比較好?)

版權聲明:本文版權屬于dlmu2001,如有轉載,請注明來源于blog.csdn.net/dlmu2001,謝謝。

WebCore中的http響應信息維護


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩伊人网 | 国产精品91av | 无遮挡一级毛片视频 | 日日碰狠狠添天天爽爽爽 | 国模无水印一区二区三区 | 亚洲午夜网 | 伊人日韩| 狠狠干奇米 | 91日韩精品天海翼在线观看 | 中文字幕久久亚洲一区 | 日韩精品一 | 久久综合久久伊人 | 天天干天天草 | 色综合久久中文综合网 | 91成年人 | 亚洲免费中文字幕 | 日日操狠狠操 | 免费观看一级特黄欧美大片 | 奇米在线观看 | 综合网在线观看 | 亚洲第一区香蕉_国产a | 国产图片区| 奇米网狠狠干 | 黄色成人影院 | 99视频精品全部免费免费观 | 久久精品国产99久久99久久久 | 久久国产精品老人性 | 一级毛片在线观看免费 | 欧美在线看片 | 久久免费香蕉视频 | 成人国内精品久久久久影院 | 国产免费一区二区三区香蕉精 | 国产成人精品一区二区免费视频 | 天天干天天舔天天操 | 成人毛片在线播放 | 午夜社区 | 日本视频播放免费线上观看 | 91福利在线视频 | 毛片网站视频 | 久久精品中文字幕极品 | 久久精品亚瑟全部免费观看 |