URL的語法及HTTP報文


大多數URL方案的URL語法都建立在這個由9部分構成的通用格式上:

scheme://user:password@host:port/path;params?query#frag

方案:http或者https

 

主機與端口:http://www.nihao.com:80/index.html

 

用戶名和密碼:ftp://joe:123@ftp.edu/pub    http://joe:123@www.nihao.com

 

路徑:http://www.nihao.com/image/1.jpg

這個URL中的路徑為/image/1.jpg, 路徑是服務器定位資源時所需的信息,可以用字符“/”將

HTTPURL的路徑組件划分成一些路徑段(path segment),每個路徑段都有自己的參數(param)

組件

 

參數:很多時候負責解析URL的應用程序需要這些協議參數來訪問資源,否則另一端的服務器可

能就不會為請求提供服務,或者更糟糕提供錯誤服務,為了正確與服務器進行交互,就得向服務

器上的應用程序提供它們所需的輸入參數 比如:

ftp://prep.edu/pub/gnu;type=d

http://www.joes.com/hammers;sale=false/index.html;graphics=true

HTTP URL的路徑組件可以分為若干路徑段,每段都可以有自己的參數

 

查詢字符串:很多資源,比如數據庫服務,都可以通過提問題或查詢來縮小所請求資源類型范圍

假設joe的五金店在數據庫中維護着一個未售貨物的清單,並可以通過清單進行查詢,以判斷產品

是否有貨,就可以用下面的URL來查詢web數據庫網關,看看編號為12731的條目是否有貨:

http://www.joes.com/inventory-check.cgi?item=12731

?右邊的內容被稱為查詢(query)組件,URL的查詢組件和標識網關資源的URL路徑組件一起被發

送給網關資源,基本上可以將網關當作訪問其他應用程序的訪問點

 

查詢可以有多個:http://www.joes.com/inventory-check.cgi?item=12731&color=blue

 

片段:有些資源類型比如HTML除了資源級外,還可以做進一步的划分,比如對一個帶有章節的

大型文檔來說,為了引用部分資源或資源的一個片段,URL支持使用片段(frag)組件來表示一個

資源內部的片段,比如URL可以指向HTML文檔中一個特定的圖片或小節

片段掛在URL的右手邊,最前面有一個字符“#”

HTTP服務器通常只處理整個對象,而不是對象的片段,客戶端不能將片段傳送給服務器,瀏覽器

從服務器獲得了整個資源之后,會根據片段來顯示你感興趣的那部分資源

 

HTTP報文由三個部分組成:對報文進行描述的起始行(start line) ,包含屬性的首部(header)

塊,以及可選的包含數據的主體(body)部分

報文的主體(或者就稱為主體)是一個可選的數據塊,可以包含文本或二進制數據,也可以為空

 

 

上圖Content-Type說明主體是純文本文檔, Content-Length說明主體有多大19個字節

 

所有HTTP報文都可以分為兩類:請求報文(request message)和響應報文(response message)

請求報文的格式:

    <method> <request-URL> <version>

    <headers>

 

    <entity-body>

響應報文的格式:

    <version> <status> <reason-phrase>

    <headers>

 

    <entity-body>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM