2008年4月19日

Web Basics Digest

  • URL(RFC 2396)

    scheme://username@server:port/path?query

    scheme和hostname的部份是不分大小寫的,但是其它的部份大小寫是不同的。

    URL可使用的字元是ASCII a-z, A-Z, 0-9和: @ & + $ ( ) /這些符號,其它的字元必須被編碼才行。(Ex:space = %20)

  • HTTP Request(RFC 2616)

    GET /light_button.png HTTP/1.1" 200 4005
    Host: www.yahoo.com.tw
    user-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
    [blank line]

    HTTP Request有三個部份:1、Request Line  2、Header  3、Body of the request(用於傳遞form的參數)

    Request Line是客戶端用來說明想要什麼東西,常用的有GET和POST兩種方法。

    Header為一連串的key/value,在HTTP/1.1中,Host為必要的header,其它的header不一定會被使用。Header最後必需以一空白列當做結束。

    message可傳遞任意資料,如果message中有資料,則Content-Type和Content-Length兩個 headers會被設定。使用GET queries時,不會有任何的附加資料,所以message部份為空,而用POST queries時,會使用message部份來傳遞參數(資料)。

  • HTTP Response

    HTTP Resonpse也有三個部份:1、 Status Line   2、Headers   3、Optional Body

    Status Line說明Server是用何種通訊協定,包含了Status Code和簡短的訊息。 (100s:informational, 200s:Successful, 300s:Redirection, 400s:Client Error, 500s:Server Error)

    Header部份讓Server在response中附加更多額外的資訊,最後也是以一空白列做為結尾。

    body中可為任何資料,在一般的Request中,為html文件。若發生錯誤時,body是傳回由Server產生的 Error message。