http協議是一種物件導向的協議,其簡單,快捷,方便,實用與分布式資訊網路管理系統
http協議的特點有:
1.支援 c/s和b/s(支援客戶/伺服器模式)
2.簡單快捷:向服務端請求時只需傳遞請求的方式(post,get,head,delete等)
3.靈活:在傳遞時只需要在content-type中定義型別,及可傳遞任意型別的資料
4.無連線:無連線的含有是沒有連線只處理乙個請求,當服務端處理完客戶端的請求並受到客戶端的應答後,就埠連線。採用這種方式可降低連線時間
http協議分 http/1.0 和 http/1.1
http協議詳解
一 請求部分
http請求分三個部分:請求頭,訊息報頭,請求正文
請求頭:
請求的方式分多種:
get 請求獲取request-uri所標識的資源
post 在request-uri所標識的資源後附加新的資料
head 請求獲取由request-uri所標識的資源的響應訊息報頭
put 請求伺服器儲存乙個資源,並用request-uri作為其標識
delete 請求伺服器刪除request-uri所標識的資源
trace 請求伺服器回送收到的請求資訊,主要用於測試或診斷
connect 保留將來使用
options 請求查詢伺服器的效能,或者查詢與資源相關的選項和需求
訊息報頭
cache-control:用於指定快取指令, no-cache(用於指示請求或響應訊息不能快取)、no-store、max-age、max-stale、min-fresh、only-if-cached
date:表示訊息產生的日期和時間
connection:用於指定是否允許傳送請求的選項:keep-live(保持連線) close(關閉連線)
accept:用於指定可以接受哪些型別的資料 eg:accept:image/gif,表明客戶端希望接受gif圖象格式的資源;accept:text/html,表明客戶端希望接受html文字。
accept-charset:用於指定接受的字符集 eg:accept-charset:iso-8859-1,gb2312.如果在請求訊息中沒有設定這個域,預設是任何字符集都可以接受。
accept-encoding:用於指定接受內容的編碼 eg:accept-encoding:gzip.deflate.如果請求訊息中沒有設定這個域伺服器假定客戶端對各種內容編碼都可以接受。
accept-language:指定一種自然語言:eg:accept-language:zh-cn.如果請求訊息中沒有設定這個報頭域,伺服器假定客戶端對各種語言都可以接受。
authorization:用於指定客戶端有許可權檢視某種資源:
host:用於指定請求的主機ip或網域名稱+埠號 eg:
我們在瀏覽器中輸入:
瀏覽器傳送的請求訊息中,就會包含host請求報頭域,如下:
host:
www.guet.edu.cn
user-agent:列出了你的作業系統的名稱和版本,你所使用的瀏覽器的名稱和版本
eg:響應報頭
location
location響應報頭域用於重定向接受者到乙個新的位置。location響應報頭域常用在更換網域名稱的時候。
server
server響應報頭域包含了伺服器用來處理請求的軟體資訊。與user-agent請求報頭域是相對應的。下面是
server響應報頭域的乙個例子:
server:apache-coyote/1.1
www-authenticate
www-authenticate響應報頭域必須被包含在401(未授權的)響應訊息中,客戶端收到401響應訊息時候,並傳送authorization報頭域請求伺服器對其進行驗證時,服務端響應報頭就包含該報頭域。
eg:www-authenticate:basic realm="basic auth test!" //可以看出伺服器對請求資源採用的是基本驗證機制。
實體報頭
content-encoding
content-encoding實體報頭域被用作**型別的修飾符,它的值指示了已經被應用到實體正文的附加內容的編碼,因而要獲得content-type報頭域中所引用的**型別,必須採用相應的解碼機制。content-encoding這樣用於記錄文件的壓縮方法,eg:content-encoding:gzip
content-language
content-language實體報頭域描述了資源所用的自然語言。沒有設定該域則認為實體內容將提供給所有的語言閱讀
者。eg:content-language:da
content-length
content-length實體報頭域用於指明實體正文的長度,以位元組方式儲存的十進位制數字來表示。
content-type
content-type實體報頭域用語指明傳送給接收者的實體正文的**型別。eg:
content-type:text/html;charset=iso-8859-1
content-type:text/html;charset=gb2312
last-modified
last-modified實體報頭域用於指示資源的最後修改日期和時間。
expires
expires實體報頭域給出響應過期的日期和時間。為了讓**伺服器或瀏覽器在一段時間以後更新快取中(再次訪問曾訪問過的頁面時,直接從快取中載入,縮短響應時間和降低伺服器負載)的頁面,我們可以使用expires實體報頭域指定頁面過期的時間。eg:expires:thu,15 sep 2006 16:23:12 gmt
http1.1的客戶端和快取必須將其他非法的日期格式(包括0)看作已經過期。eg:為了讓瀏覽器不要快取頁面,我們也可以利用expires實體報頭域,設定為0,jsp中程式如下:response.setdateheader("expires","0");
HTTP協議總結
http是應用層協議,由http客戶端發起乙個請求,建立乙個到伺服器指定埠的tcp連線。http 伺服器則在埠監聽客戶端的請求,一旦受到請求就會向客戶端返回乙個狀態 200,500等 以及返回內容。注 http是乙個無狀態的協議,通過伺服器認證後成功請求了乙個資源後再次請求這一資源時,伺服器仍舊會要...
http協議總結
http 全稱 超文字傳輸協議 它是乙個應用層的協議,使用埠號80,關鍵要知道它是乙個無狀態的協議。無狀態就是後續處理訊息,沒有前面的訊息。1 cookie 2 session cookie 由伺服器產生,瀏覽器收到請求後,儲存在本地 瀏覽器下次請求伺服器時,就是帶上cookie,這樣伺服器就知道是...
http協議總結
什麼是時間戳?時間戳作用 防止快取,解決版本更新 不同步的問題。如果不加時間戳,當http相應狀態為304時,從本地快取中讀取資源,而沒有請求到伺服器。http狀態304 表示從本地讀取。解決非法盜用資源的方法?通過判斷referer 進行過濾,如下。public class imgfilter i...