Http請求格式(在Linux下使用telnet親測,通過這篇我才明白)

來源:互聯網
上載者:User

標籤:nbsp   sdi   hbox   實體   length   lang   網域名稱   應該   value   

命令列視窗中用telnet測試HTTP協議請求訊息格式響應訊息格式1. 命令列視窗中用telnet測試HTTP協議 
HTTP訊息是由普通ASCII文本組成。訊息包括訊息頭和資料體部分。訊息頭以行為單位,每行以CRLF(斷行符號和換行)結束,訊息頭結束後,額外增加一個CRLF,之後內容就是資料體部分了。
我們可以在命令列視窗,通過TELNET,來測試HTTP協議。
1. 使用telnet串連到HTTP伺服器,如要從google上請求index.html頁面,首先要串連到伺服器的80連接埠

telnet www.google.cn 80
2. 現在已經串連上了伺服器,發送http請求訊息:
GET /index.html HTTP/1.1
connection: close
Host: www.google.cn
輸入上面內容後,連續敲入兩個斷行符號,哈哈,是不是看到返回結果了。
這個請求的意思是:通過1.1版本協議請求index.html頁面;connection: close是實用短串連,即伺服器返回後就中斷連線;Host欄位知名頁面所在的主機名稱。
返回結果應該是這樣的:
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Date: Fri, 02 Jan 2009 12:26:17 GMT
Expires: -1
Content-Type: text/html; charset=GB2312
Set-Cookie: PREF=ID=7bbe374f53b6c6a8:NW=1:TM=1230899177:LM=1230899177:S=2EGHuZJnrtdQUB_A; expires=Sun, 02-Jan-2011 12:26:17 GMT; path=/; domain=.google.com
Server: gws
Transfer-Encoding: chunked
Connection: Close
這裡有一個額外的CRLF
<html>
html資料
</html>
2. 請求訊息格式 
是HTTP協議請求的一般格式:

•請求行 
第一行是請求行:要求方法 URL路徑 HTTP版本號碼,上面的例子中的請求行是:
GET /index.html HTTP/1.1
使用GET方法請求伺服器根目錄下的index.html檔案,約定使用HTTP/1.1版本。
要求方法包括GET、POST、HEAD、OPTIONS、TRACE、PUT等幾種,最常用的前2種。
1. GET方法。通過將參數附加在URL後面提交參數。如http://www.google.cn/search?hl=zh-CN&newwindow=1&rls=com.microsoft%3Azh-cn%3AIE-SearchBox&q=%E6%89%8B%E6%9C%BA&meta=&aq=f&oq=
GET
2. POST方法。通過將參數附加在請求的頭部行後面(GET方式是沒有資料體的)提交參數。GET方式提交參數資料量一般限制在1k一下,而POST是沒有限制的。POST一般用在表單資料提交的時候。
3. HEAD方法不讓伺服器在回應中返回任何實體。對HEAD請求的回應部分來說,它的HTTP標題中包含的元資訊與通過GET請求所得到的是相同的。通過使用這種方法,不必傳輸整個實體主體,就可以得到請求URI所指定資源的元資訊。該方法通常用來測試超連結的合法性、可訪問性及最新動向。 

•頭部行 
頭部行中的內容一般用來描述用戶端能相容的類型。如Accept-Language告訴伺服器用戶端支援哪些語言;Cache-Control告訴伺服器用戶端是否支援cache。
•附屬體(資料實體) 
請求的附屬體,GET不適用,POST方法提交資料時,用來存放請求的參數。
•用戶端傳遞參數方式 
1. GET方式傳遞,直接在URL後面。
2. POST方式傳遞,請求行告訴伺服器參數長度,通過附屬體獨立傳給伺服器。
3. Cookie方式傳遞,不要忘記這種方式了,會話Session功能就是通過這種方式實現的哦。
•一些常用的頭部行請求參數 
User-Agent:用戶端的瀏覽器資訊。
Connection:close表示使用短串連,Keep-Alive表示用戶端支援持久串連。
Date:訊息產生的目前時間。
Accept-Language:用戶端支援的語言。
Cache-Control:用戶端是否支援cache。no-cache表示用戶端不支援cache,如max-age=3600,告訴User Agent 該請求的響應結果在多長時間內有效,在有效期間內,當使用者再次需要訪問時,直接從用戶端本地提取,不需要訪問伺服器。
Referer:Referer用以告訴伺服器該請求來自於哪個URL,可以用追蹤使用者的WEB訪問路徑。
If-Modified-Since: 如果請求訊息包含If-Modified-Since標題域,GET方法的文法就變成“條件GET”,即“(conditional GET)”。 條件GET方法可以對指定資源進行判斷,如果它在If-Modified-Since標題域中的指定日期後發生了更新,才啟動傳輸,否則不傳輸。這種條件GET允許被緩衝的實體在不必經過多次請求或不必要的資料轉送就能進行重新整理,從而有助於降低網路負載。
Last-Modified: Sun, 03 Dec 2008 23:52:56 GMT
ETag: “1cbf3-dfd-3a2adcd8″
    一般應用在檔案下載上,用於標識響應內容的最後修改時間或內容較驗碼,當下一次User agent需要時,服務首先判斷這二個值是否跟伺服器上一致,一樣則不需要返回內容。
Expires:該請求的響應結果在什麼時間失效,在沒有失效之前,代理可直接從緩衝中返回以前的響應結果。
Host:指定請求資源的主機和連接埠號碼。HTTP/1.1請求必須指定Host,否則伺服器會返回400狀態代碼。


•請求訊息例子 
GET請求例子:
GET /css/news070130.css HTTP/1.1
Accept: */*
Referer: http://news.qq.com/a/20081224/000088.htm
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
If-Modified-Since: Thu, 29 Mar 2007 02:05:43 GMT; length=11339
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: news.qq.com
Connection: Keep-Alive
Cookie: ssid=idlsesels; flv=9.0; icache=ADLFMBGC; adid=adsdifids; isflucky_50829637=0; 
POST請求例子:
POST /Login.PHP  HTTP/1.1
Accept: image/gif,*/*
Accept-language: zh-cn
Accept-encodeing: gzip
User-Agent: MSIE6.0
Host: www.some.com
Connection: Keep-Alive
Content-Length: 7
Cache-Control:no-cache
Cookie: name1=value1; name2=value2;
這裡有一個額外的CRLF
username=b&passwd=d


3. 響應訊息格式

響應訊息包括狀態行、若干頭部行和附屬體(html資料實體)。
•狀態行 
狀態行包括:HTTP協議版本號碼、狀態代碼、狀態代碼的文本描述資訊。如:HTTP/1.1 200 OK
狀態代碼由一個三位元組成,狀態代碼大體有5種含義:
1. 1xx。資訊,請求收到,繼續處理。
2. 2xx。成功。200請求成功;206斷點續傳。
3. 3xx。重新導向。一般跳轉到新的地址。
4. 4xx。用戶端錯誤。404檔案不存在
5. 5xx。伺服器錯誤。500內部錯誤。
•頭部行 
Set-Cookie:伺服器設定用戶端Cookie。設定格式是name=value,設定多個參數時中間用分號隔開。Set-Cookie時還會用到幾個參數:PATH設定有效路徑,DOMAIN設定cookie生效的網域名稱,Expire設定cookie的有效時間,0表示關閉瀏覽器就失效。
Location:當伺服器返回3xx重新導向時,該參數實現重新導向。廣告連結的跳轉就使用這種協議。
Content-Length:附屬體(資料實體)的長度

http://blog.csdn.net/w616589292/article/details/44353003

Http請求格式(在Linux下使用telnet親測,通過這篇我才明白)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.