欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

WebCore 中的 http 請(qǐng)求信息維護(hù)

系統(tǒng) 1700 0


WebCore內(nèi)核本身并不實(shí)現(xiàn)http協(xié)議,它通過調(diào)用不同平臺(tái)的http庫,比如Qt的QnetWorkRequest,gtk的soup,或者curl等,來實(shí)現(xiàn)http協(xié)議的功能。這里將以curl為例,來理解webcore中的請(qǐng)求信息維護(hù)。

http協(xié)議的細(xì)節(jié),如果希望深入了解的話,可以參考rfc2616,rfc2617。簡(jiǎn)單介紹下它的原理,http協(xié)議遵循的是一個(gè)請(qǐng)求à響應(yīng)的機(jī)制。也就是說,一個(gè)url,對(duì)應(yīng)一個(gè)請(qǐng)求à響應(yīng)鏈。而在網(wǎng)頁中,任何資源對(duì)應(yīng)的都是一個(gè)url。如果客戶端想從服務(wù)器端申請(qǐng)一個(gè)資源,需要發(fā)起一個(gè)請(qǐng)求,http的請(qǐng)求格式是純文本格式,如下是一個(gè)簡(jiǎn)單的例子:

Get /index.htmlHTTP/1.1

Accept: text/html,*/*

User-Agent:mozilla/4.0

Host:www.csdn.net

Referer:www.hao123.com

Connection:Keep-Alive

以上是獲取 http://www.csdn.net /index.html的請(qǐng)求。Accept,User-Agent,Host,Referer,Connection都是請(qǐng)求頭部的字段。

Csdn在收到這樣一個(gè)請(qǐng)求以后,如果它的服務(wù)器上確實(shí)存在test.png這個(gè)資源,則返回http響應(yīng)如下

HTTP/1.1 200 OK

Content-Length: 862

Date: Tue, 12 Oct 2010 06:21:46 GMT

Content-Type: text/html

ETag: "b59305a7-35e-484b91e27e9ec"

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=gb2312">

<title>csdn.net,中國(guó)領(lǐng)先的it技術(shù)社區(qū)</title>

</head>

<body>

…………………………….

</body>

</html>

這樣,一個(gè)http請(qǐng)求就完成了,流程非常簡(jiǎn)單明了,所以在互聯(lián)網(wǎng)上使用特別廣泛。由于只是一個(gè)簡(jiǎn)單的請(qǐng)求à響應(yīng)機(jī)制,所以http是沒有狀態(tài)這一個(gè)說法的(這同大部分協(xié)議基于狀態(tài)機(jī)的機(jī)制是不同的),當(dāng)然,為了在某些情況下,維護(hù)一個(gè)狀態(tài),http加入了cookie的管理機(jī)制,利用cookie來實(shí)現(xiàn)了一些狀態(tài)的管理。另外,為了節(jié)約網(wǎng)絡(luò)流量,提高性能,http協(xié)議中定義了cache的機(jī)制。

http的協(xié)議細(xì)節(jié)實(shí)現(xiàn)并不需要WebCore來關(guān)注,WebCore要關(guān)注的是,如何設(shè)置請(qǐng)求的相關(guān)頭部信息,如何獲取服務(wù)器返回回來的響應(yīng)體部數(shù)據(jù)。

WebKit中同http打交道的類主要是ResourceRequest,ResourceResonse,ResourceHandle*,ResourceHandleManager等,這里先介紹同請(qǐng)求信息維護(hù)相關(guān)的ResourceRequest.

ResourceRequest類的作用比較好理解,基本上就是維護(hù)http請(qǐng)求相關(guān)的信息(app或者內(nèi)核都有可能設(shè)置這些信息),然后當(dāng)WebCore發(fā)起http請(qǐng)求的時(shí)候,可以獲取這些信息,調(diào)用curl的接口設(shè)置對(duì)應(yīng)的http請(qǐng)求字段。在這些信息中,最常用到的是url。

ResourceRequest類繼承于ResourceRequestBase類,絕大部分功能在ResourceRequestBase類中實(shí)現(xiàn)。

一)ResourceRequest構(gòu)造:構(gòu)造一個(gè)ResourceRequest對(duì)象只需要url參數(shù)就夠了,這是比較簡(jiǎn)單的一個(gè)類,沒有維護(hù)其它類的對(duì)象或者句柄。
ResourceRequest(const String& url);
ResourceRequest(const KURL& url);

二)ResourceRequest對(duì)象的創(chuàng)建與維護(hù)


1.當(dāng)用戶輸入網(wǎng)址,開始一個(gè)網(wǎng)頁的請(qǐng)求的時(shí)候,會(huì)調(diào)用QwebFrame::load函數(shù),在該函數(shù)中,會(huì)構(gòu)造出ResourceRequest對(duì)象,并將這個(gè)對(duì)象作為一個(gè)參數(shù),調(diào)用FrameLoader類的load函數(shù),DocumentLoader類中會(huì)維護(hù)這個(gè)ResourceRequest,在調(diào)用MainResourceLoader的load接口的時(shí)候,也會(huì)把ResourceRequest對(duì)象傳遞過去,在MainResourceLoader中維護(hù)相應(yīng)的信息。當(dāng)MainResourceLoader類loadNow接口的時(shí)候,又會(huì)在創(chuàng)建的ResourceHandle的內(nèi)部數(shù)據(jù)結(jié)構(gòu)成員(ResourceHandleInternal)d中維護(hù)ResourceRequest對(duì)象。


2.

點(diǎn)擊一個(gè)鏈接的時(shí)候,也會(huì)通過FrameLoader類的urlSelected發(fā)出一個(gè)新的請(qǐng)求,在發(fā)起請(qǐng)求的時(shí)候構(gòu)造出ResourceRequest對(duì)象。同樣也會(huì)在DocumentLoader、MainResourceLoader和ResourceHandle類中都維護(hù)ResourceRequest對(duì)象。


3.

根據(jù)資源的種類,除了1和2,請(qǐng)求還可以分為子楨請(qǐng)求(如iframe標(biāo)簽),Css請(qǐng)求,Script請(qǐng)求,Image請(qǐng)求,Object請(qǐng)求,Media請(qǐng)求,Worker請(qǐng)求(HTML5),Prefetch請(qǐng)求等,參考ResourceRequestBase類中的TargetType枚舉。


4.

ResourceHandleManager(/curl)類的initializeHandle函數(shù)中,會(huì)通過ResourceHandle類來訪問ResourceRequest對(duì)象,獲取之前設(shè)置過的ResourceRequest的信息(比如url,method,user-agent,referer等),調(diào)用curl_easy_setopt接口,設(shè)置到curl里面。


5.FrameLoader

類的addExtraFieldsToRequest接口會(huì)設(shè)置一些請(qǐng)求頭的信息。


6.DocumentLoader

對(duì)應(yīng)的請(qǐng)求是不停地在變化的(比如發(fā)生重定向),所以結(jié)構(gòu)中維護(hù)了多個(gè)ResourceRequest對(duì)象,這些對(duì)象可能不一樣

WebCore 中的 http 請(qǐng)求信息維護(hù)

三)其它
在這個(gè)類中,還可以通過cachePolicy,setCachePolicy,allowCookies,setAllowCookies在WebKit和http之間建立起控制的通道

WebCore 中的 http 請(qǐng)求信息維護(hù)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产色婷婷精品综合在线观看 | 激情五月色综合国产精品 | 日本午夜免费无码片三汲大片 | 欧美日韩亚洲一区 | 久久久久久久免费视频 | 99热在线播放 | 在线观看国产精品一区 | 久久久九九精品国产毛片A片 | 国产亚洲欧美另类第一页 | 日韩成人精品 | 久久久成人精品 | 久久久91 | 波多野结衣亚洲 | 亚洲成a人在线观看 | 人人爽久久涩噜噜噜蜜桃 | 欧美激情bbbbbxxxxⅹ | 国产精品人妻无码久久久郑州 | 99视频这里只有精品国产 | 久久这里只有精品免费播放 | 色秀视频免费高清网站 | 97热久久 | 日韩在线你懂的 | 亚洲艳情网站 | 国产精品a久久久久 | 精品在线一区二区 | 久久99热久久精品23 | 91国内外精品自在线播放 | 久草这里只有精品 | 波多野结衣三级在线观看 | 亚洲91视频 | 国产一区精品视频 | 国产精品美女一区二区三区 | 毛片在线免费观看完整版 | av在线一区二区三区 | 久久久婷 | 国产日韩欧美一区二区 | 亚洲视频在线观看一区 | 一区二区三区视频在线 | 女人一级毛片免费视频观看 | 国产三级网站在线观看 | 精品国产黄a∨片高清在线 亚洲3atv精品一区二区三区 |