http協議的8種請求型別介紹
http協議中共定義了八種方法或者叫「動作」來表明對request-uri指定的資源的不同操作方式,具體介紹如下:
connect:http/1.1協議中預留給能夠將連線改為管道方式的**伺服器。
雖然http的請求方式有8種,但是我們在實際應用中常用的也就是get和post,其他請求方式也都可以通過這兩種方式間接的來實現。
get: 請求指定的頁面資訊,並返回實體主體。
head: 只請求頁面的首部。
post: 請求伺服器接受所指定的文件作為對所標識的uri的新的從屬實體。
http 定義了與伺服器互動的不同方法,最基本的方法是 get 和 post。事實上 get 適用於多數請求,而保留 post 僅用於更新站點。根據 http 規範,get 用於資訊獲取,而且應該是 安全的和冪等的。所謂安全的意味著該操作用於獲取資訊而非修改資訊。換句話說,get 請求一般不應產生***。冪等的意味著對同一 url 的多個請求應該返回同樣的結果。完整的定義並不像看起來那樣嚴格。從根本上講,其目標是當使用者開啟乙個鏈結時,她可以確信從自身的角度來看沒有改變資源。 比如,新聞站點的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當前的新聞。反之亦然。post 請求就不那麼輕鬆了。post 表示可能改變伺服器上的資源的請求。仍然以新聞站點為例,讀者對文章的註解應該通過 post 請求實現,因為在註解提交之後站點已經不同了(比方說文章下面出現一條註解);
在form提交的時候,如果不指定method,則預設為get請 求,form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣傳送,但空格轉換為「+「號,其它符號轉換為%xx,其中xx為 該符號以16進製表示的ascii(或iso latin-1)值。get請求請提交的資料放置在http請求協議頭中,而post提交的資料則放在實體資料中;
get方式提交的資料最多只能有1024位元組,而post則沒有此限制。
在表單裡使用」post」和」get」有什麼區別
在form裡面,可以使用post也可以使用get。它們都是method的合法取值。但是,post和get方法在使用上至少有兩點不同:
1、get方法通過url請求來傳遞使用者的輸入。post方法通過另外的形式。
2、get方式的提交你需要用request.querystring來取得變數的值,而post方式提交時,你必須通過request.form來訪問提交的內容。
仔細研究下面的**。你可以執行之來感受一下:
**<% if request.querystring(「text」) <> 「「 then %>
通過get方法傳遞來的字串是: 「<%= request.querystring(「text」) %>「
<% end if %>
<% if request.form(「text」) <> 「「 then %>
通過post方法傳遞來的字串是: 「<%= request.form(「text」) %>「
<% end if %>
說明把上面的**儲存為getpost.asp,然後執行,首先測試post方法,這時候,瀏覽器的url並沒有什麼變化,返回的結果是:
通過post方法傳遞來的字串是: 「hello world」
然後測試用get方法提交,請注意,瀏覽器的url變成了:
而返回的結果是:
通過get方法傳遞來的字串是: 「hello world」
最後再通過post方法提交,瀏覽器的url還是:
而返回的結果變成:
通過get方法傳遞來的字串是: 「hello world」
通過post方法傳遞來的字串是: 「hello world」
提示通過get方法提交資料,可能會帶來安全性的問題。比如乙個登陸頁面。當通過get方法提交資料時,使用者名稱和密碼將出現在url上。如果:
1、 登陸頁面可以被瀏覽器快取;
2、 其他人可以訪問客戶的這台機器。
那麼,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號和密碼。所以,在某些情況下,get方法會帶來嚴重的安全性問題。
建議在form中,建議使用post方法。
如果用head方法請求的話,則伺服器返回的只是響應標題,而不會返回被請求的文擋,head方法通用於一些搜尋引擎
比如:get /index.html http/1.1
accept: text/plain /純ascii碼文字檔案/
accept: text/html /html文字檔案/
user-agent:mozilla/4.5(winnt)
說明瀏覽器使用get方法請求文件/index.html。瀏覽器則只允許接收純ascii碼文字檔案和html文字檔案,其使用的引擎是mozilla/4.5(netscape)。
當伺服器響應時,其狀態行的資訊為http的版本號,狀態碼,及解釋狀態碼的簡單說明。現將5類狀態碼詳細列出:
① 客戶方錯誤
100 繼續
101 交換協議
② 成功
200 ok
201 已建立
202 接收
203 非認證資訊
204 無內容
205 重置內容
206 部分內容
③ 重定向
300 多路選擇
301 永久轉移
302 暫時轉移
303 參見其它
304 未修改(not modified)
305 使用**
④ 客戶方錯誤
400 錯誤請求(bad request)
401 未認證
402 需要付費
403 禁止(forbidden)
404 未找到(not found)
405 方法不允許
406 不接受
407 需要**認證
408 請求超時
409 衝突
410 失敗
411 需要長度
412 條件失敗
413 請求實體太大
414 請求uri太長
415 不支援**型別
⑤ 伺服器錯誤
500 伺服器內部錯誤
501 未實現(not implemented)
502 閘道器失敗
504 閘道器超時
505 http版本不支援
比如:(在《telnet……》一文中用telnet登陸80埠,相同的方法用在http/1.1中,會發現沒有顯示,下面補充說明之)
host:www.fudan.edu.cn /本行為輸入內容/
date: web, 01 nov 2000 07:12:29 gmt /當前的日期/時間/
server: apache/1.3.12 (unix) /web伺服器資訊/
allow: get, head, option, trace /支援的方法型別/
connection: close
connect-type: text/html; charset=iso-8859-1/連線的**型別/
501 method
not implemented
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 :請求文件的最近修改時間。 expires :請求文件的過期時間。 connect-length:文件資料的長度。 www-authenricate:通知客戶端需要的認證資訊。 connect-encoding :說明有無使用壓縮技術。 transfer-encoding :說明採用的編碼變換型別。
HTTP協議的8種請求型別介紹
http協議中共定義了八種方法或者叫 動作 來表明對request uri指定的資源的不同操作方式,具體介紹如下 connect http 1.1協議中預留給能夠將連線改為管道方式的 伺服器。雖然http的請求方式有8種,但是我們在實際應用中常用的也就是get和post,其他請求方式也都可以通過這兩...
HTTP協議的8種請求型別介紹
http協議中共定義了八種方法或者叫 動作 來表明對request uri指定的資源的不同操作方式,具體介紹如下 connect http 1.1協議中預留給能夠將連線改為管道方式的 伺服器。雖然http的請求方式有8種,但是我們在實際應用中常用的也就是get和post,其他請求方式也都可以通過這兩...
HTTP協議的8種請求型別及介紹
get 該請求會向資料庫發索取資料的請求,從而來獲取資訊,該請求就像資料庫的select操作一樣,只是用來查詢一下資料,不會修改 增加資料,不會影響資源的內容,即該請求不會產生 無論進行多少次操作,結果都是一樣的。put 該請求是向伺服器端傳送資料的,從而改變資訊,該請求就像資料庫的update操作...