亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++中的HTTP協(xié)議問(wèn)題

 更新時(shí)間:2022年12月28日 09:32:08   作者:king_weng  
這篇文章主要介紹了C++中的HTTP協(xié)議問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1、HTTP

Hyper Text Transfer Protocol(超文本傳輸協(xié)議)。

是一種通信協(xié)議,它允許將超文本標(biāo)記語(yǔ)言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器。

在Internet中所有的傳輸都是通過(guò)TCP/IP進(jìn)行的。HTTP協(xié)議作為T(mén)CP/IP模型中應(yīng)用層的協(xié)議也不例外。

HTTP協(xié)議通常承載于TCP協(xié)議之上,有時(shí)也承載于TLS或SSL協(xié)議層之上,這個(gè)時(shí)候,就成了我們常說(shuō)的HTTPS。HTTP默認(rèn)的端口號(hào)為80,HTTPS的端口號(hào)為443。

如下圖所示:

2、http請(qǐng)求-響應(yīng)模型

HTTP是一個(gè)應(yīng)用層協(xié)議,由請(qǐng)求和響應(yīng)構(gòu)成,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型。

HTTP協(xié)議永遠(yuǎn)都是客戶端發(fā)起請(qǐng)求,服務(wù)器回送響應(yīng)。這樣就限制了使用HTTP協(xié)議,無(wú)法實(shí)現(xiàn)在客戶端沒(méi)有發(fā)起請(qǐng)求的時(shí)候,服務(wù)器將消息推送給客戶端。

HTTP同時(shí)支持支持B/S及C/S模式。支持基本認(rèn)證和安全認(rèn)證。

3、主要特點(diǎn)

(1)簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。

(2)靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。

(3)HTTP 0.9和1.0使用非持續(xù)連接:限制每次連接只處理一個(gè)請(qǐng)求,服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開(kāi)連接。HTTP 1.1使用持續(xù)連接:不必為每個(gè)web對(duì)象創(chuàng)建一個(gè)新的連接,一個(gè)連接可以傳送多個(gè)對(duì)象,采用這種方式可以節(jié)省傳輸時(shí)間。

(4)無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。

4、工作流程

HTTP完整流程包括四部分:

(1)客戶機(jī)與服務(wù)器建立連接。

(2)客戶機(jī)發(fā)送請(qǐng)求給服務(wù)器。

(3)服務(wù)器接收到客戶端的請(qǐng)求,給予相應(yīng)的響應(yīng)信息。

(4)客戶端收到請(qǐng)求并處理。

5、http請(qǐng)求的組成

http請(qǐng)求由三部分組成:請(qǐng)求行,首部,請(qǐng)求正文。

  • 請(qǐng)求報(bào)文格式為:請(qǐng)求行+首部+空行+實(shí)體組成
  • 響應(yīng)報(bào)文格式為:狀態(tài)行+首部+空行+實(shí)體組成

(1)請(qǐng)求行:

以方法開(kāi)頭,以空格分開(kāi),緊隨其后的是路徑和版本(包括http請(qǐng)求的種類,請(qǐng)求資源的路徑,協(xié)議的版本號(hào))。

格式:

Method  Request-URL  HTTP-Version  CLRF

注:

  • Method:請(qǐng)求方法(get,post等)
  • Request-URL:統(tǒng)一的資源標(biāo)識(shí)符
  • HTTP-Version:HTTP協(xié)議的版本
  • CRL:為回車和換行(回車和換行只能出現(xiàn)在結(jié)尾,不能再其他地方出現(xiàn))。

請(qǐng)求方法:

  • GET請(qǐng)求服務(wù)器的文檔;POST向服務(wù)器發(fā)送信息;
  • PUT從服務(wù)器向客戶端發(fā)送文檔;DELETE為刪除web網(wǎng)頁(yè);
  • TRACE為把到達(dá)的請(qǐng)求回送;HEAD為請(qǐng)求關(guān)于文檔的信息,但不是文檔本身; OPTIONS詢問(wèn)關(guān)于可用的選項(xiàng);

(2)請(qǐng)求首部

http的頭部信息,每一個(gè)用\r\n分割;

常用的首部有:

  • Connection:允許客戶端和服務(wù)器指定與請(qǐng)求/響應(yīng)連接有關(guān)的選項(xiàng)(長(zhǎng)連接,短連接等)
  • Data:提供日期和時(shí)間標(biāo)志
  • MIME-Version:給出了發(fā)送端使用的MIME版本
  • Client-IP:描述客戶端機(jī)器的IP
  • From:提供了客戶端用戶的E-mail地址
  • Host:給出請(qǐng)求的主機(jī)名和端口號(hào)
  • Referer:提供了包含當(dāng)前請(qǐng)求的URL的文檔的URL
  • cookie:向服務(wù)器傳送一個(gè)令牌

(3)請(qǐng)求正文

為發(fā)送給服務(wù)器的查詢信息(使用get時(shí),body是空的,get只能讀取,而post可以寫(xiě)入信息);

(4)響應(yīng)報(bào)文也包括請(qǐng)求行,請(qǐng)求首部,空行,實(shí)體

請(qǐng)求行格式為:http版本+狀態(tài)碼+短語(yǔ)+\r\n  短語(yǔ)與狀態(tài)碼相對(duì)應(yīng)

請(qǐng)求首部格式為:一系列首部名稱:值\r\n的組合

請(qǐng)求實(shí)體為:服務(wù)端真正返回的信息

狀態(tài)編碼為:

  • 100-199指定客戶端響應(yīng)的一些動(dòng)作,請(qǐng)求已被服務(wù)接收 200-299表示請(qǐng)求被接受,處理成功 
  • 300-399表示已經(jīng)移動(dòng)的文件,重定向,需進(jìn)一步處理
  • 400-499指定客戶端的錯(cuò)誤,有語(yǔ)法錯(cuò)誤無(wú)法實(shí)現(xiàn) 500-599指定服務(wù)端的錯(cuò)誤,服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求

6、短連接和長(zhǎng)連接

HTTP1.1之后使用了長(zhǎng)連接,長(zhǎng)連接使數(shù)據(jù)傳輸完成后繼續(xù)保持TCP連接不間斷,等待相同域名繼續(xù)使用這個(gè)通道進(jìn)行數(shù)據(jù)傳輸。

HTTP1.0使用首部Connection:Keep-alive進(jìn)行長(zhǎng)連接的試驗(yàn),HTTP1.1之后使用Connection:Close來(lái)告訴服務(wù)端不使用長(zhǎng)連接。但是使用了Connection:Keep-alive這個(gè)首部并不代表采用長(zhǎng)連接。

  • 在短連接中:每一個(gè)請(qǐng)求/響應(yīng)都需要建立一次TCP連接(三次握手),
  • 長(zhǎng)連接模式下:判斷數(shù)據(jù)接收完成的方法有 --1--服務(wù)器關(guān)閉連接;--2--首部Content-Length判斷是否傳輸完畢,指定了實(shí)體正文的長(zhǎng)度。

7、http中的操作

HTTP/1.1協(xié)議中共定義了八種方法(有時(shí)也叫“動(dòng)作”)來(lái)表明Request-URI指定的資源的不同操作方式,最基本的有4種,分別是GET,POST,PUT,DELETE對(duì)應(yīng)著對(duì)這個(gè)資源的查,改,增,刪4個(gè)操作。最常見(jiàn)的就是GET和POST了。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息。具體方法:

(1)GET:向特定的資源發(fā)出請(qǐng)求

(2)POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。

(3)PUT:向指定資源位置上傳其最新內(nèi)容。

(4)DELETE:請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源。

(5)HEAD:向服務(wù)器索要與GET請(qǐng)求相一致的響應(yīng),只不過(guò)響應(yīng)體將不會(huì)被返回。這一方法可以在不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)消息頭中的元信息。該方法常用于測(cè)試超鏈接的有效性,是否可以訪問(wèn),以及最近是否更新。

(6)TRACE:請(qǐng)求服務(wù)器會(huì)送收到的請(qǐng)求信息,主要用于測(cè)試或診斷。

(7)OPTIONS:請(qǐng)求查詢服務(wù)器的性能,或者查詢與資源相關(guān)的選項(xiàng)和需求

(8)CONNECT:HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。(即留為將來(lái)使用)

8、GET與POST的區(qū)別

(1)GET提交的數(shù)據(jù)會(huì)放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如EditPosts.aspx?postid=6810130&update=1 ;POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中。

(2)GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對(duì)URL的長(zhǎng)度有限制),而POST方法提交的數(shù)據(jù)沒(méi)有限制。

(3)GET方式需要使用Request.QueryString來(lái)取得變量的值,而POST方式通過(guò)Request.Form來(lái)獲取變量的值。

(4)GET方式提交數(shù)據(jù),會(huì)帶來(lái)安全問(wèn)題,比如一個(gè)登錄頁(yè)面,通過(guò)GET方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在URL上,如果頁(yè)面可以被緩存或者其他人可以訪問(wèn)這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的賬號(hào)和密碼。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++語(yǔ)言基礎(chǔ) this和static關(guān)鍵字

    C++語(yǔ)言基礎(chǔ) this和static關(guān)鍵字

    這篇文章主要介紹了C++語(yǔ)言基礎(chǔ) this和static關(guān)鍵字,需要的朋友可以參考下
    2020-01-01
  • 簡(jiǎn)單對(duì)比C語(yǔ)言中的fputs()函數(shù)和fputc()函數(shù)

    簡(jiǎn)單對(duì)比C語(yǔ)言中的fputs()函數(shù)和fputc()函數(shù)

    這篇文章主要介紹了簡(jiǎn)單對(duì)比C語(yǔ)言中的fputs()函數(shù)和fputc()函數(shù),注意其之間的區(qū)別,需要的朋友可以參考下
    2015-08-08
  • C語(yǔ)言形參與實(shí)參使用的差別講解

    C語(yǔ)言形參與實(shí)參使用的差別講解

    形參出現(xiàn)在函數(shù)定義中,在整個(gè)函數(shù)體內(nèi)都可以使用, 離開(kāi)該函數(shù)則不能使用。實(shí)參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能使用,形參和實(shí)參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時(shí), 主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送
    2023-02-02
  • C++?Boost?Spirit進(jìn)階教程

    C++?Boost?Spirit進(jìn)階教程

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • C語(yǔ)言每日練習(xí)之選擇排序

    C語(yǔ)言每日練習(xí)之選擇排序

    本篇文章主要介紹了 C語(yǔ)言的選擇排序,這里提供代碼實(shí)例以便大家理解,通過(guò)本文,更好的理解排序算法
    2021-11-11
  • C++實(shí)現(xiàn)簡(jiǎn)單貪吃蛇小游戲

    C++實(shí)現(xiàn)簡(jiǎn)單貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • VS2022 Git提交代碼的實(shí)現(xiàn)

    VS2022 Git提交代碼的實(shí)現(xiàn)

    本文主要介紹了VS2022 Git提交代碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C++標(biāo)準(zhǔn)庫(kù)中sstream與strstream的區(qū)別詳細(xì)解析

    C++標(biāo)準(zhǔn)庫(kù)中sstream與strstream的區(qū)別詳細(xì)解析

    以下是對(duì)C++標(biāo)準(zhǔn)庫(kù)中sstream與strstream的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • QT實(shí)現(xiàn)FTP上傳文件

    QT實(shí)現(xiàn)FTP上傳文件

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)FTP上傳文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單停車場(chǎng)管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單停車場(chǎng)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單停車場(chǎng)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評(píng)論