• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            兔子的技術(shù)博客

            兔子

               :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

            留言簿(10)

            最新評論

            閱讀排行榜

            評論排行榜

            1HTTP請求格式:

            <request line>

            <headers>

            <blank line>

            [<request-body>]

            HTTP請求中,第一行必須是一個請求行(request line),用來說明請求類型、要訪問的資源以及使用的HTTP版本。緊接著是一個首部(header)小節(jié),用來說明服務(wù)器要使用的附加信息。在首部之后是一個空行,再此之后可以添加任意的其他數(shù)據(jù)[稱之為主體(body)]。

            2.GET與POST區(qū)別

            HTTP定義了與服務(wù)器交互的不同方法,最基本的方法是 GET  POST.

            HTTP-GET和HTTP-POST是使用HTTP的標準協(xié)議動詞,用于編碼和傳送變量名/變量值對參數(shù),并且使用相關(guān)的請求語義。每個HTTP-GET和HTTP-POST都由一系列HTTP請求頭組成,這些請求頭定義了客戶端從服務(wù)器請求了什么,而響應(yīng)則是由一系列HTTP應(yīng)答頭和應(yīng)答數(shù)據(jù)組成,如果請求成功則返回應(yīng)答。
              HTTP-GET以使用MIME類型application/x-www-form-urlencoded的urlencoded文本的格式傳遞參數(shù)。Urlencoding是一種字符編碼,保證被傳送的參數(shù)由遵循規(guī)范的文本組成,例如一個空格的編碼是"%20"。附加參數(shù)還能被認為是一個查詢字符串。
              與HTTP-GET類似,HTTP-POST參數(shù)也是被URL編碼的。然而,變量名/變量值不作為URL的一部分被傳送,而是放在實際的HTTP請求消息內(nèi)部被傳送。

            (1)get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。

            (1)   在客戶端,Get方式在通過URL提交數(shù)據(jù),數(shù)據(jù)URL可以看到;POST方式,數(shù)據(jù)放置在HTML HEADER內(nèi)提交。

            (2) 對于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。

            (2)   GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST沒有此限制

            (3)   安全性問題。正如在(1)中提到,使用 Get 的時候,參數(shù)會顯示在地址欄上,而 Post 不會。所以,如果這些數(shù)據(jù)是中文數(shù)據(jù)而且是非敏感數(shù)據(jù),那么使用 get;如果用戶輸入的數(shù)據(jù)不是中文字符而且包含敏感數(shù)據(jù),那么還是使用 post為好。

            注:所謂安全的意味著該操作用于獲取信息而非修改信息。冪等的意味著對同一 URL 的多個請求應(yīng)該返回同樣的結(jié)果。完整的定義并不像看起來那樣嚴格。換句話說,GET 請求一般不應(yīng)產(chǎn)生副作用。從根本上講,其目標是當(dāng)用戶打開一個鏈接時,她可以確信從自身的角度來看沒有改變資源。比如,新聞?wù)军c的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當(dāng)前的新聞。反之亦然。POST 請求就不那么輕松了。POST 表示可能改變服務(wù)器上的資源的請求。仍然以新聞?wù)军c為例,讀者對文章的注解應(yīng)該通過 POST 請求實現(xiàn),因為在注解提交之后站點已經(jīng)不同了(比方說文章下面出現(xiàn)一條注解)。

            下面舉一個簡單的例子來說明它們的區(qū)別:

            <!-分別通過get和post方式提交表單--> 
            <FORM ACTION="getpost.asp" METHOD="get"> 
            <INPUT TYPE="text" NAME="Text" VALUE="
            http://wxf0701.cnblogs.com//
            <INPUT TYPE="submit" VALUE="Get方式"></INPUT> 
            </FORM> 
            <BR> 
            <FORM ACTION="getpost.asp" METHOD="post"> 
            <INPUT TYPE="text" NAME="Text" VALUE="
            http://wxf0701.cnblogs.com/
            <INPUT TYPE="submit" VALUE="Post方式"></INPUT> 
            </FORM> 
            <BR>

            <% If Request.QueryString("Text") <> "" Then %> 
            通過get方式傳遞的字符串是: "<B><%= Request.QueryString("Text") %></B>"<BR> 
            <% End If %>

            <% If Request.Form("Text") <> "" Then %> 
            通過Post方式傳遞的字符串是: "<B><%= Request.Form("Text") %></B>"<BR> 
            <% End If %>

            (http://blog.csdn.net/notbadgirl/article/details/3876096)

            相關(guān)資料
            如何使用SOCKET 發(fā)送HTTP1.1 GET POST請求包 

            HTTP報文是面向文本的,報文中的每一個字段都是一些ASCII碼串,各個字段的長度是不確定的。HTTP有兩類報文:請求報文和響應(yīng)報文。
            請求報文
            一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)4個部分組成,下圖給出了請求報文的一般格式。

             (1)請求行
            請求行由請求方法字段、URL字段和HTTP協(xié)議版本字段3個字段組成,它們用空格分隔。例如,GET /index.html HTTP/1.1。
            HTTP協(xié)議的請求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。這里介紹最常用的GET方法和POST方法。
            GET:當(dāng)客戶端要從服務(wù)器中讀取文檔時,使用GET方法。GET方法要求服務(wù)器將URL定位的資源放在響應(yīng)報文的數(shù)據(jù)部分,回送給客戶端。使用GET方法時,請求參數(shù)和對應(yīng)的值附加在URL后面,利用一個問號(“?”)代表URL的結(jié)尾與請求參數(shù)的開始,傳遞參數(shù)長度受限制。例如,/index.jsp?id=100&op=bind。
            POST:當(dāng)客戶端給服務(wù)器提供信息較多時可以使用POST方法。POST方法將請求參數(shù)封裝在HTTP請求數(shù)據(jù)中,以名稱/值的形式出現(xiàn),可以傳輸大量數(shù)據(jù),可用來傳送文件。
            (2)請求頭部
            請求頭部由關(guān)鍵字/值對組成,每行一對,關(guān)鍵字和值用英文冒號“:”分隔。請求頭部通知服務(wù)器有關(guān)于客戶端請求的信息,典型的請求頭有:
            User-Agent:產(chǎn)生請求的瀏覽器類型。
            Accept:客戶端可識別的內(nèi)容類型列表。
            Host:請求的主機名,允許多個域名同處一個IP地址,即虛擬主機。
            (3)空行
            最后一個請求頭之后是一個空行,發(fā)送回車符和換行符,通知服務(wù)器以下不再有請求頭。
            對于一個完整的http請求來說空行是必須的,否則服務(wù)器會認為本次請求的數(shù)據(jù)尚未完全發(fā)送到服務(wù)器,處于等待狀態(tài)。
            (4)請求數(shù)據(jù)
            請求數(shù)據(jù)不在GET方法中使用,而是在POST方法中使用。POST方法適用于需要客戶填寫表單的場合。與請求數(shù)據(jù)相關(guān)的最常使用的請求頭是Content-Type和Content-Length。
            (5)請求示例
            POST:
            POST報文頭如下:

            POST /sn/index.php HTTP/1.1
            Accept: */*
            Accept-Language: zh-cn
            host: localhost
            Content-Type: application/x-www-form-urlencoded
            Content-Length: 12
            Connection:close
            sn=123&n=asa
            在http頭后邊有一空行,空行后邊接著發(fā)送post數(shù)據(jù),長度通過Content-Length: 12
            指出,此post數(shù)據(jù)中包含兩項
            sn=123
            n=asa
            其中:Content-Type: application/x-www-form-urlencoded 指定POST數(shù)據(jù)的編碼類型
            Content-Length: 12 POST數(shù)據(jù)的長度
            GET:
            GET報問頭如下:
            GET /sn/index.php?sn=123&n=asa HTTP/1.1
            Accept: */*
            Accept-Language: zh-cn
            host: localhost
            Content-Type: application/x-www-form-urlencoded
            Content-Length: 12
            Connection:close
            示例代碼:
             1 void MEF_Set_Http_Header(MEF_Http_Action_t method, S8 * action, S8 * server, S8 * msg_body, S8 * head, U8 connect_type)  
             2 {
             3         S8 tmp_buf[20];
             4         const S8 * http_methods_table[MEF_TOTAL_HTTP_ACTIONS] = {"GET", "POST", "HEAD", "PUT", "OPTIONS", "DELETE", "TRACE", "CONNECT"};
             5 
             6         sprintf(head,"%s ", http_methods_table[method]);
             7         if(action)
             8         {
             9                 strcat(head, action);  
            10         }
            11 
            12         strcat(head," HTTP/1.1");  
            13         strcat(head,"/r/n");  
            14 
            15         strcat(head,"Accept:*/*");  
            16         strcat(head,"/r/n");  
            17 
            18         strcat(head,"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");  
            19         strcat(head,"/r/n");  
            20 
            21         strcat(head,"Host: ");  
            22         strcat(head,server);   
            23         strcat(head,"/r/n");  
            24 
            25         if(method == MEF_HTTP_POST)
            26         {
            27                 strcat(head,"Content-Type: application/x-www-form-urlencoded");  
            28                 strcat(head,"/r/n");  
            29         }
            30 
            31         if(method == MEF_HTTP_POST)
            32         {
            33                 strcat(head, "Content-Length: ");
            34                 sprintf(tmp_buf, "%d", strlen(msg_body));
            35                 strcat(head, tmp_buf);
            36                 strcat(head,"/r/n");  
            37         }
            38         if(connect_type == 1)
            39                 strcat(head,"Connection: Keep-Alive");
            40         else
            41                 strcat(head,"Connection: close");
            42                 
            43         strcat(head,"/r/n");  
            44         strcat(head,"/r/n");  
            45         
            46         if(method == MEF_HTTP_POST)
            47         {
            48                 if(msg_body)
            49                 {
            50                         strcat(head,msg_body);  
            51                 }
            52         }
            53 } 

            轉(zhuǎn)自:http://blog.csdn.net/yc0188/article/details/4741871
            posted on 2012-09-12 13:54 會飛的兔子 閱讀(3588) 評論(1)  編輯 收藏 引用 所屬分類: 非C++技術(shù)資料

            Feedback

            # re: http協(xié)議中g(shù)et和post的區(qū)別(轉(zhuǎn)) 2014-05-16 16:42 aylht
            寫的非常好,呵呵,意猶未盡啊,如果再加一部分http響應(yīng)報文的相關(guān)內(nèi)容就絕對棒了!
            謝謝!  回復(fù)  更多評論
              

            久久久中文字幕| 亚洲va久久久噜噜噜久久狠狠| 国产精品久久久久影院色| 亚洲一区中文字幕久久| 伊人久久大香线蕉亚洲| 久久国产精品久久国产精品| 亚洲精品午夜国产va久久| 人妻精品久久无码区| 香蕉久久永久视频| 丰满少妇人妻久久久久久4| 久久久精品2019免费观看| 伊人久久成人成综合网222| 99久久国产亚洲高清观看2024| 久久综合噜噜激激的五月天| 久久国产劲爆AV内射—百度| 亚洲va久久久久| 一级a性色生活片久久无| 国产精品99久久久久久www| 国产高潮久久免费观看| 久久久久久噜噜精品免费直播| 亚洲一区二区三区日本久久九| 91精品国产高清久久久久久91| 亚洲综合婷婷久久| 热久久视久久精品18| WWW婷婷AV久久久影片| 久久精品无码一区二区日韩AV| 久久无码AV中文出轨人妻| 奇米综合四色77777久久| 国产精品免费久久久久久久久| 久久亚洲国产成人影院| 亚洲国产二区三区久久| 亚洲中文字幕无码久久精品1| 久久99国产精品二区不卡| 国产69精品久久久久APP下载| 久久久久国产精品熟女影院| 久久久精品国产亚洲成人满18免费网站| 奇米影视7777久久精品人人爽| 久久99精品九九九久久婷婷| 久久久无码人妻精品无码| 久久久久久久波多野结衣高潮| 久久久精品视频免费观看|