青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

  • 隨筆 - 44
  • 文章 - 0
  • 評論 - 86
  • 引用 - 0

常用鏈接

留言簿(6)

隨筆分類(31)

隨筆檔案(44)

Mining

最新隨筆

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

Http 基礎

= HTTP 基礎
一個完整的 HTTP 請求可以分成4步:
 1. 創建TCP socket, 連接到Web 服務器
 2. 發送Http 請求頭
 3. 接受Web 響應數據
 4. 關閉socket 連接
整個流程可以通過telnet hostname 80 來模擬
一個完整的請求例子如下
* About to connect() to www.baidu.com port 80 (#0)
*   Trying 202.108.22.5... connected
* Connected to www.baidu.com (202.108.22.5) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.16.4 (i586-pc-mingw32msvc) libcurl/7.16.4 OpenSSL/0.9.7e zlib/1.2.2
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Thu, 25 Sep 2008 05:14:30 GMT
< Server: BWS/1.0
< Content-Length: 3342
< Content-Type: text/html
< Cache-Control: private
< Expires: Thu, 25 Sep 2008 05:14:30 GMT
< Set-Cookie: BAIDUID=3A8165EF68FFEE5F605D33ADEF300BA1:FG=1; expires=Thu, 25-Sep-38 05:14:30 GMT; path=/; domain=.baidu.com
< P3P: CP=" OTI DSP COR IVA OUR IND COM "
<
<html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><title>......

另外值得說明的是, HTTP 請求是無狀態的,表明在處理一個請求時,Web服務器并不記住來自同一客戶端的請求。

= Http 請求頭
包含4個部分: 請求行、請求頭、空行和請求數據

1. 請求行
由三個標記組成:請求方法、請求URI和HTTP版本,它們用空格分隔, 如:GET /index.html HTTP/1.1

HTTP 規范定義了8種請求方法:
GET   檢索URI中標識資源的一個簡單請求
HEAD   與GET方法相同,服務器只返回狀態行和頭標,并不返回請求文檔
POST   服務器接受被寫入客戶端輸出流中的數據的請求
PUT   服務器保存請求數據作為指定URI新內容的請求
DELETE   服務器刪除URI中命名的資源的請求
OPTIONS  關于服務器支持的請求方法信息的請求
TRACE   Web服務器反饋Http請求和其頭標的請求
CONNECT  已文檔化但當前未實現的一個方法,預留做隧道處理

2. 請求頭 [ 可無 ]
由關鍵字及值對組成,每行一對,關鍵字和值用冒號(:)分隔。如
> User-Agent: curl/7.16.4 (i586-pc-mingw32msvc) libcurl/7.16.4 OpenSSL/0.9.7e zlib/1.2.2
> Host: www.baidu.com
> Accept: */*
具體請求頭如后所列

3. 空行
最后一個請求頭之后是一個空行,發送回車符和退行,通知服務器以下不再有頭標。

4. 請求數據 [ 可無 ]
使用POST傳送數據,最常使用的是Content-Type和Content-Length頭標


= Web 響應
由四個部分組成: 狀態行、響應頭、空行、響應數據, 如:
< HTTP/1.1 200 OK
< Date: Thu, 25 Sep 2008 05:14:30 GMT
< Server: BWS/1.0
< Content-Length: 3342
< Content-Type: text/html
< Cache-Control: private
< Expires: Thu, 25 Sep 2008 05:14:30 GMT
< Set-Cookie: BAIDUID=3A8165EF68FFEE5F605D33ADEF300BA1:FG=1; expires=Thu, 25-Sep-38 05:14:30 GMT; path=/; domain=.baidu.com
< P3P: CP=" OTI DSP COR IVA OUR IND COM "
<
<html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><title>......

1.狀態行
由三個標記組成:HTTP版本、響應代碼和響應描述
HTTP版本:: 向客戶端指明其可理解的最高版本。
響應代碼:: 3位的數字代碼,指出請求的成功或失敗,如果失敗則指出原因。
響應描述:: 為響應代碼的可讀性解釋。

< HTTP/1.1 200 OK

HTTP響應碼劃分如下(祥見后):
1xx:信息,請求收到,繼續處理
2xx:成功,行為被成功地接受、理解和采納
3xx:重定向,為了完成請求,必須進一步執行的動作
4xx:客戶端錯誤


2.響應頭
跟請求頭一樣,它們指出服務器的功能,標識出響應數據的細節。

3.空行
最后一個響應頭標之后是一個空行,發送回車符和退行,表明服務器以下不再有頭標。

4.響應數據
HTML文檔和圖像等,就是HTML本身。


= HTTP頭
用以描述客戶端或者服務器的屬性、被傳輸的資源等, 分為
1.通用頭標:即可用于請求,也可用于響應,是作為一個整體而不是特定資源與事務相關聯。
2.請求頭標:允許客戶端傳遞關于自身的信息和希望的響應形式。
3.響應頭標:服務器和于傳遞自身信息的響應。
4.實體頭標:定義被傳送資源的信息。即可用于請求,也可用于響應。

下表描述在HTTP/1.1中用到的頭標
Accept   定義客戶端可以處理的媒體類型,按優先級排序;
  在一個以逗號為分隔的列表中,可以定義多種類型和使用通配符。例如:Accept: image/jpeg,image/png,*/*
Accept-Charset  定義客戶端可以處理的字符集,按優先級排序;
  在一個以逗號為分隔的列表中,可以定義多種類型和使用通配符。例如:Accept-Charset: iso-8859-1,*,utf-8
Accept-Encoding 定義客戶端可以理解的編碼機制。例如:Accept-Encoding:gzip,compress
Accept-Language 定義客戶端樂于接受的自然語言列表。例如:Accept-Language: en,de
Accept-Ranges  一個響應頭標,它允許服務器指明:將在給定的偏移和長度處,為資源組成部分的接受請求。
  該頭標的值被理解為請求范圍的度量單位。例如Accept-Ranges: bytes或Accept-Ranges: none
Age   允許服務器規定自服務器生成該響應以來所經過的時間長度,以秒為單位。
  該頭標主要用于緩存響應。例如:Age: 30
Allow   一個響應頭標,它定義一個由位于請求URI中的次源所支持的HTTP方法列表。例如:Allow: GET,PUT
AUTHORIZATION  一個響應頭標,用于定義訪問一種資源所必需的授權(域和被編碼的用戶ID與口令)。
  例如:Authorization: Basic YXV0aG9yOnBoaWw=
Cache-Control  一個用于定義緩存指令的通用頭標。例如:Cache-Control: max-age=30
Connection  一個用于表明是否保存socket連接為開放的通用頭標。例如:Connection: close或Connection: keep-alive
Content-Base  一種定義基本URI的實體頭標,為了在實體范圍內解析相對URLs。
  如果沒有定義Content-Base頭標解析相對URLs,使用Content-Location URI(存在且絕對)或使用URI請求。
  例如:Content-Base: Http://www.myweb.com
Content-Encoding 一種介質類型修飾符,標明一個實體是如何編碼的。例如:Content-Encoding: zip
Content-Language 用于指定在輸入流中數據的自然語言類型。例如:Content-Language: en
Content-Length 指定包含于請求或響應中數據的字節長度。例如:Content-Length:382
Content-Location 指定包含于請求或響應中的資源定位(URI)。
  如果是一絕。對URL它也作為被解析實體的相對URL的出發點。
  例如:Content-Location: http://www.myweb.com/news
Content-MD5  實體的一種MD5摘要,用作校驗和。
  發送方和接受方都計算MD5摘要,接受方將其計算的值與此頭標中傳遞的值進行比較。
  例如:Content-MD5: <base64 of 128 MD5 digest>
Content-Range  隨部分實體一同發送;標明被插入字節的低位與高位字節偏移,也標明此實體的總長度。
  例如:Content-Range: 1001-2000/5000
Contern-Type  標明發送或者接收的實體的MIME類型。例如:Content-Type: text/html
Date   發送HTTP消息的日期。例如:Date: Mon,10PR 18:42:51 GMT
ETag   一種實體頭標,它向被發送的資源分派一個唯一的標識符。
  對于可以使用多種URL請求的資源,ETag可以用于確定實際被發送的資源是否為同一資源。
  例如:ETag: "208f-419e-30f8dc99"
Expires  指定實體的有效期。例如:Expires: Mon,05 Dec 2008 12:00:00 GMT
Form   一種請求頭標,給定控制用戶代理的人工用戶的電子郵件地址。例如:From: webmaster@myweb.com
Host   被請求資源的主機名。對于使用HTTP/1.1的請求而言,此域是強制性的。例如:Host: www.myweb.com
If-Modified-Since 如果包含了GET請求,導致該請求條件性地依賴于資源上次修改日期。
  如果出現了此頭標,并且自指定日期以來,此資源已被修改,應該反回一個304響應代碼。
  例如:If-Modified-Since: Mon,10PR 18:42:51 GMT
  If-Match 如果包含于一個請求,指定一個或者多個實體標記。只發送其ETag與列表中標記區配的資源。
  例如:If-Match: "208f-419e-308dc99"
  If-None-Match 如果包含一個請求,指定一個或者多個實體標記。資源的ETag不與列表中的任何一個條件匹配,操作才執行。
  例如:If-None-Match: "208f-419e-308dc99"
If-Range  指定資源的一個實體標記,客戶端已經擁有此資源的一個拷貝。必須與Range頭標一同使用。
  如果此實體自上次被客戶端檢索以來,還不曾修改過,那么服務器只發送指定的范圍,否則它將發送整個資源。
  例如:Range: byte=0-499<CRLF>If-Range:"208f-419e-30f8dc99"
If-Unmodified-Since 只有自指定的日期以來,被請求的實體還不曾被修改過,才會返回此實體。
  例如:If-Unmodified-Since:Mon,10PR 18:42:51 GMT
Last-Modified  指定被請求資源上次被修改的日期和時間。例如:Last-Modified: Mon,10PR 18:42:51 GMT
Location  對于一個已經移動的資源,用于重定向請求者至另一個位置。
  與狀態編碼302(暫時移動)或者301(永久性移動)配合使用。
  例如:Location: http://www2.myweb.com/index.jsp
Max-Forwards  一個用于TRACE方法的請求頭標,以指定代理或網關的最大數目,該請求通過網關才得以路由。
  在通過請求傳遞之前,代理或網關應該減少此數目。例如:Max-Forwards: 3
Pragma   一個通用頭標,它發送實現相關的信息。例如:Pragma: no-cache
Proxy-Authenticate 類似于WWW-Authenticate,便是有意請求只來自請求鏈(代理)的下一個服務器的認證。
  例如:Proxy-Authenticate: Basic realm-admin
Proxy-Proxy-Authorization 類似于授權,但并非有意傳遞任何比在即時服務器鏈中更進一步的內容。
  例如:Proxy-Proxy-Authorization: Basic YXV0aG9yOnBoaWw=
Public   列表顯示服務器所支持的方法集。例如:Public: OPTIONS,MGET,MHEAD,GET,HEAD
Range   指定一種度量單位和一個部分被請求資源的偏移范圍。例如:Range: bytes=206-5513
Refener  一種請求頭標域,標明產生請求的初始資源。對于HTML表單,它包含此表單的Web頁面的地址。
  例如:Refener: http://www.myweb.com/news/search.html
Retry-After  一種響應頭標域,由服務器與狀態編碼503(無法提供服務)配合發送,以標明再次請求之前應該等待多長時間。
  此時間即可以是一種日期,也可以是一種秒單位。例如:Retry-After: 18
Server   一種標明Web服務器軟件及其版本號的頭標。例如:Server: Apache/2.0.46(Win32)
Transfer-Encoding 一種通用頭標,標明對應被接受方反向的消息體實施變換的類型。例如:Transfer-Encoding: chunked
Upgrade  允許服務器指定一種新的協議或者新的協議版本,與響應編碼101(切換協議)配合使用。
  例如:Upgrade: HTTP/2.0
User-Agent  定義用于產生請求的軟件類型(典型的如Web瀏覽器)。
  例如:User-Agent: Mozilla/4.0(compatible; MSIE 5.5; Windows NT; DigExt)
Vary   一個響應頭標,用于表示使用服務器驅動的協商從可用的響應表示中選擇響應實體。例如:Vary: *
Via   一個包含所有中間主機和協議的通用頭標,用于滿足請求。例如:Via: 1.0 fred.com, 1.1 wilma.com
Warning  用于提供關于響應狀態補充信息的響應頭標。例如:Warning: 99 www.myweb.com Piano needs tuning
www-Authenticate 一個提示用戶代理提供用戶名和口令的響應頭標,與狀態編碼401(未授權)配合使用。響應一個授權頭標。
  例如:www-Authenticate: Basic realm=zxm.mgmt

= HTTP碼應碼
響應碼由三位十進制數字組成,它們出現在由HTTP服務器發送的響應的第一行, 分五種類型,由它們的第一位數字表示:
- 1xx:信息,請求收到,繼續處理
- 2xx:成功,行為被成功地接受、理解和采納
- 3xx:重定向,為了完成請求,必須進一步執行的動作
- 4xx:客戶端錯誤,請求包含語法錯誤或者請求無法實現
- 5xx:服務器錯誤,服務器不能實現一種明顯無效的請求

下表顯示每個響應碼及其含義:
100 繼續
101 分組交換協
200 OK
201 被創建
202 被采納
203 非授權信息
204 無內容
205 重置內容
206 部分內容
300 多選項
301 永久地傳送
302 找到
303 參見其他
304 未改動
305 使用代理
307 暫時重定向
400 錯誤請求
401 未授權
402 要求付費
403 禁止
404 未找到
405 不允許的方法
406 不被采納
407 要求代理授權
408 請求超時
409 沖突
410 過期的
411 要求的長度
412 前提不成立
413 請求實例太大
414 請求URI太大
415 不支持的媒體類型
416 無法滿足的請求范圍
417 失敗的預期
500 內部服務器錯誤
501 未被使用
502 網關錯誤
503 不可用的服務
504 網關超時
505 HTTP版本未被支持


= 實例

== POST 數據

== 上傳一個文件
假設接受文件的網頁程序位于 a
bb
ccc

客戶端鏈接 192.168.29.65 后, 應該發送如下http 請求:
POST /upload_file/UploadFile HTTP/1.1
Accept: text/plain, */*
Accept-Language: zh-cn
Host: 192.168.29.65
Content-Type:multipart/form-data;boundary=---------------------------7d33a816d302b6
User-Agent: Mozilla/4.0 (compatible; OpenOffice.org)
Content-Length: 333
Connection: Keep-Alive

-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="userfile1"; filename="E:s"
Content-Type: application/octet-stream
a
bb
ccc
-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="text1"
foo
-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="password1"
bar
-----------------------------7d33a816d302b6--

(上面有一個回車)

此內容必須一字不差,包括最后的回車。
注意:Content-Length: 333 這里的333是紅色內容的總長度(包括最后的回車)
注意這一行:
Content-Type: multipart/form-data; boundary=---------------------------7d33a816d302b6
根據 rfc1867, multipart/form-data是必須的.
---------------------------7d33a816d302b6 是分隔符,分隔多個文件、表單項。其中33a816d302b6 是即時生成的一個數字,用以確保整個分隔符不會在文件或表單項的內容中出現。Form每個部分用分隔符分割,分隔符之前必須加上"--"著兩個字符(即--{boundary})才能被http協議認為是Form的分隔符,表示結束的話用在正確的分隔符后面添加"--"表示結束。

前面的 ---------------------------7d 是 IE 特有的標志,Mozila 為---------------------------71.
每個分隔的數據的都可以用Content-Type來表示下面數據的類型,可以參考rfc1341 (
http://www.ietf.org/rfc/rfc1341.txt) 例如:
Contect-Type:application/octet-stream 表示下面的數據是二進制數據
Contect-Type:text/plain 表示下面的數據是ASSCII碼數據
Contect-Type:text/richtext 表示下面的數據是RTF格式

posted on 2008-09-25 14:05 泡泡牛 閱讀(3292) 評論(1)  編輯 收藏 引用 所屬分類: WebDevelope

評論

# re: Http 基礎 2008-09-25 15:09 肥仔

請看我blog里面收集的HTTP文章
=========
http://m.shnenglu.com/woaidongmao/category/6784.html
  回復  更多評論    
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲视频欧美在线| 欧美日韩一区二区在线观看| 亚洲精品1区2区| 久久久亚洲国产天美传媒修理工| 亚洲一区二区三区精品在线| 亚洲一区二区三区777| 欧美一区二区视频在线| 久久精品三级| 亚洲国产精品成人综合色在线婷婷| 91久久精品国产91性色tv| 99国产精品私拍| 欧美一区二区三区视频免费| 久久视频国产精品免费视频在线| 欧美精品18| 国产日韩在线亚洲字幕中文| 亚洲人成在线播放| 亚洲欧美电影在线观看| 老司机一区二区三区| 亚洲精品一区二区三区在线观看| 亚洲午夜性刺激影院| 久久久久五月天| 欧美日韩性视频在线| 国模 一区 二区 三区| 99精品福利视频| 久久精品国产欧美激情| 亚洲经典一区| 欧美综合77777色婷婷| 欧美日本亚洲| 有码中文亚洲精品| 亚洲欧美日韩在线高清直播| 欧美激情国产高清| 欧美在现视频| 国产精品乱码| 9色精品在线| 欧美mv日韩mv国产网站app| 中文精品一区二区三区| 国产一区久久| 欧美精品一级| 在线播放日韩专区| 欧美一区二粉嫩精品国产一线天| 亚洲国产精品va在看黑人| 欧美一区二区三区四区夜夜大片| 欧美激情第9页| 怡红院精品视频| 久久青青草综合| 西西裸体人体做爰大胆久久久| 欧美三级网址| 日韩网站在线观看| 亚洲成人中文| 老司机成人网| 伊人成人开心激情综合网| 久久国产精品高清| 亚洲欧美成人一区二区在线电影 | 亚洲你懂的在线视频| 欧美日韩国产综合视频在线| 亚洲精品一区二区在线观看| 欧美a级一区| 美女黄色成人网| 亚洲二区在线观看| 欧美成人视屏| 欧美成人精品h版在线观看| 在线视频观看日韩| 欧美国产一区视频在线观看 | 一区二区免费在线观看| 欧美日韩精品在线视频| 亚洲天堂网在线观看| 一区二区三区蜜桃网| 国产精品激情偷乱一区二区∴| 亚洲四色影视在线观看| 亚洲欧美成人一区二区在线电影| 国产精品一级久久久| 久久精品成人| 美女国产一区| 亚洲手机成人高清视频| 亚洲综合精品四区| 国产最新精品精品你懂的| 欧美国产精品久久| 欧美日韩在线高清| 久久精品视频亚洲| 欧美成人精品福利| 亚洲欧美日韩综合国产aⅴ| 欧美一区二区在线免费观看| 亚洲国产高清高潮精品美女| 亚洲另类在线视频| 国产伦精品一区二区三区照片91| 久久亚洲一区| 欧美日韩天天操| 狂野欧美激情性xxxx欧美| 欧美精品一区二区三区很污很色的 | 免费成人毛片| 亚洲国产乱码最新视频| 日韩午夜免费| 亚洲视频在线观看网站| 久久久av毛片精品| 一本久久综合| 久久国产手机看片| 一区二区高清在线观看| 小嫩嫩精品导航| 99re热精品| 久久久久国产成人精品亚洲午夜| 亚洲精品极品| 欧美亚洲视频在线观看| 亚洲每日更新| 久久久www免费人成黑人精品| 一区二区三区四区蜜桃| 久久综合色综合88| 欧美在线免费| 欧美三区在线视频| 亚洲国产第一页| 激情婷婷欧美| 亚洲欧美日韩精品| 亚洲综合国产精品| 欧美精品在线免费| 葵司免费一区二区三区四区五区| 国产精品ⅴa在线观看h| 亚洲国产日韩欧美一区二区三区| 国产主播一区二区三区| 一本色道久久加勒比精品| 最新日韩精品| 免费高清在线视频一区·| 久久久久久久999| 国产日韩欧美一区二区三区在线观看 | aa级大片欧美| 久久精品国产久精国产爱| 亚洲欧美乱综合| 欧美日韩一区在线观看| 亚洲国产精品久久91精品| 一区精品在线| 久久亚洲精品一区| 欧美大片免费看| 亚洲高清久久| 欧美风情在线观看| 久久综合色88| 亚洲黄色成人久久久| 鲁鲁狠狠狠7777一区二区| 免费观看成人www动漫视频| 在线成人av网站| 男同欧美伦乱| 亚洲国产欧美国产综合一区| 亚洲精品综合在线| 欧美日韩国产成人在线观看| 亚洲免费av观看| 亚洲综合成人在线| 国产亚洲精品bv在线观看| 久久成人国产| 亚洲二区三区四区| 一区二区三区久久久| 国产精品黄色| 久久国产精品久久国产精品| 欧美成人综合网站| 一本色道久久加勒比88综合| 欧美日韩国产色视频| 亚洲欧美日韩直播| 狼人天天伊人久久| 亚洲视频中文| 国产在线精品一区二区中文 | 欧美日韩亚洲国产一区| 亚洲欧洲一区二区三区| 一区二区三区视频在线| 国产精品麻豆成人av电影艾秋| 午夜精品一区二区三区在线视 | 亚洲视频一区二区| 久久久久国产精品厨房| 亚洲国产影院| 国产精品女主播在线观看 | 久久亚洲春色中文字幕| 亚洲国产视频直播| 欧美中文在线观看国产| 亚洲高清色综合| 国产精品免费网站| 久久综合中文字幕| 亚洲在线播放电影| 欧美激情国产精品| 久久电影一区| 这里只有精品丝袜| 有码中文亚洲精品| 国产伦精品一区二区三区视频黑人 | 亚洲精品中文字幕在线| 国产精品国产三级国产专播品爱网 | 久久深夜福利免费观看| 一本色道久久综合亚洲精品小说 | 欧美视频亚洲视频| 久久一区二区三区四区| 亚洲在线日韩| aa成人免费视频| 亚洲成色精品| 久久野战av| 欧美在线视频在线播放完整版免费观看| 在线观看日韩www视频免费| 国产精品久久毛片a| 欧美福利精品| 久久噜噜噜精品国产亚洲综合| 在线视频中文亚洲| 亚洲精品国产视频| 欧美成人精品影院| 免播放器亚洲| 另类综合日韩欧美亚洲| 久久久精品tv| 久久九九精品99国产精品| 欧美亚洲系列|