HTTP協議的8種請求型別介紹

2021-08-31 06:59:15 字數 4131 閱讀 2288

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操作...