基於請求/響應模式,快速靈活,無狀態,支援
b/s、
c/s的協議
url結構:
埠 /路徑
http請求:分三部分:請求行、訊息報頭、請求正文。
1、請求行:格式:
method: get 獲取
request-uri
標識的資源
post 在
request-uri
標識的資源後附加新的資料
head 請求有
request-uri
標識的資源的響應訊息報頭
put 請求儲存乙個資源,並用
request-uri
作為標識
delete 請求刪除乙個
request-uri
所標識資源
trace 請求伺服器回送收到的請求資訊,用於測試診斷
connect 保留字
options 請求查詢伺服器的效能,或查詢與資源相關的選項和需求
http響應:分三部分:狀態行、訊息報頭、響應正文。
1、狀態行格式:
狀態碼類別:
1xx:請求已接受,繼續處理、
2xx:成功
-標識請求已被接受、理解、接受。
200//
客戶端請求成功
3xx:重定向
-要完成請求需進一步的操作
4xx:客戶端錯誤
-請求語法錯誤或無法實現
400/ 客戶端請求語法錯誤
401/ 請求未經授權,需和
www-authentivate
報頭域一起使用
404/ 請求資源不存在
5xx:服務端錯誤
-伺服器未能實現合法請求
500/ 伺服器傳送不可預期錯誤
503/ 伺服器當前不能處理客戶端請求,一段時間可能恢復
http訊息報頭(普通報頭、請求報頭、響應報頭、實體報頭)
每乙個報頭域都是由
組成,名字不區分大小寫
1、普通報頭
普通報頭中,有少數報頭域用於所有的請求和響應訊息,但並不用於被傳輸的實體,只用於傳輸的訊息。
cache-control:用於指定快取指令,快取指令是單向的(響應出現的請求未必出現),獨立的(乙個訊息的快取不會影響另乙個訊息處理的快取機制):
請求的快取指令有:no-cache(用於指示請求或響應訊息不能快取)、
no-store
、max-age
、max-stale
、min-fresh
、only-if-cached;
響應時的快取指令包括:public、
private
、no-cache
、no-store
、no-transform
、must-revalidate
、proxy-revalidate
、max-age
、s-maxage.
date普通報頭域
標識訊息產生的日期和時間
connection普通報頭域允許傳送
/指定連線的選項。例如指定連線是連續、或指定「
close
」選項,通知伺服器,在響應完成後,關閉連線。
2、請求報頭
請求報頭允許客戶端向伺服器端傳遞請求的附加資訊以及客戶端自身的資訊。
常用的請求報頭
accept
accept請求報頭域用於指定客戶端接受哪些型別的資訊。
li:accept:image/gif,
表明希望接受
gif圖
accept-charset:指定客戶端接受的字符集。不設定預設是任何字元都接受
accept-encoding:指定可接受的內容編碼。
eg:gzip
accept-language:指定一種自然語言。
eg:zh-cn
authorization:用於證明客戶端有權檢視某個資源。如果收到伺服器響應**
401,可以傳送乙個包含
authorization
請求報頭域的請求,要求伺服器對其進行驗證
host:指定主機和埠號
user-agent:獲取客戶端作業系統和遊覽器資訊
3、響應報頭
響應報頭允許伺服器傳遞不能放在狀態行中的附加響應資訊,以及關於伺服器的資訊和對request-uri所標識的資源進行下一步訪問的資訊
常用的響應報頭
location 重定向接受者到新的位置、常用在更換網域名稱的時候
server 包含伺服器用來處理請求的軟體資訊。與
user-agent
對應www-authenticate 響應報頭域必須被包含在
401(未授權)響應訊息中,客戶端收到
401響應時,傳送
authorization
報頭域請求伺服器對其驗證
4、實體報頭
請求和響應訊息都可以傳送乙個實體、乙個實體由實體報頭域和實體正文組成。但並不是說實體報頭域和實體正文要一起傳送,可以只傳送實體報頭域。實體報頭定義了關於實體正文和請求所標識的資源的元訊息。
content-type:指示傳送給接收者的實體正文的**型別;
eg:text/html;charset=utf-8;
content-encoding:指示已經被應用到實體正文的附加內容的編碼。需要獲得
content-type
所用的型別
content-language:描述資源所用的自然語言
last-modified:指示資源最後修改日期和時間
expires:指定響應過期的日期和時間。(為了讓伺服器或遊覽在一段時間後更新快取)
重定向和請求**的區別
一、response.sendredirect(url)--伺服器將新
url傳送給遊覽器,遊覽器再根據新
url請求
request.getrequestdispatcher(url).forward(request,response);請求**到指定
url(伺服器內部跳轉
url然後將結果發給遊覽器)
二、response.sendredirect(url)--客戶端跳轉
request.getrequestdispatcher(url).forward(request,response)--伺服器跳轉
三、response.sendredirect(url)--跳轉到指定
url位址後,上個頁面的請求會結束,
request
物件會消亡,資料會消亡。
request.getrequestdispatcher(url).forward(request,response)--內部跳轉,
request
物件一直存在
四、response.sendredirect(url)--**會改變
request.getrequestdispatcher(url).forward(request,response)--以遊覽器角度來看,他只是傳送乙個
request
然後收到乙個
response,
所以url
不變五、
response.sendredirect(url)--傳引數需要在
url後加引數。
request.getrequestdispatcher(url).forward(request,response)-傳引數可以操作
request物件
setattribute(
「name
」,value)
六、response.sendredirect(url)-可以定位到任意的**
request.getrequestdispatcher(url).forward(request,response)-只能定位到伺服器資源
七、response.sendredirect(url)--可以重定向有
frame
的jsp
檔案resquest.getrequestdispatcher(url).forward(request,response)-不可以重定向有
frame
的jsp
檔案,可以定向到有
frame
的html
檔案,只有在客戶端沒有輸出時才可以呼叫
forward
方法,如果當前頁面緩衝區不是空的,那麼該句可能不起作用,由於這種提交不會改變
url位址,重新整理會重複提交。
Http協議詳解 Http請求詳解
http是hypertext transfer protocol 超文字傳輸協議 的簡寫,它是tcp ip協議的乙個應用層協議,用於定義web瀏覽器與web伺服器之間交換資料的過程。客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,http協議用於定義客戶端與w...
Http協議詳解
http協議是乙個基於tcp ip 的協議,使用的是一種請求 響應模型 目前的版本為1。1,但有一些 仍然使用1。0的版本,在待會的實驗中,我們可以看到,網易的主頁163.com仍舊使用的1.0的標準。1 何為請求 響應機制 在這一種機制中,總是客戶端請求伺服器,伺服器接受響應後根據請求端的請求資訊...
HTTP協議詳解
head to inde x.html not supported.invalid method in request head htp 1.1 apache 1.3.12 server at www.fudan.edu.cn port 80 關於實體頭部的內容還可以有 last modified ...