华南俳烁实业有限公司

java

當(dāng)前位置:中華考試網(wǎng) >> java >> javaWeb >> 文章內(nèi)容

HTTPGet與Post的區(qū)別

來源:中華考試網(wǎng)  [2020年11月26日]  【

  表單提交中Get和Post方式的區(qū)別有5點(diǎn)

  1. get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。

  2. get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在URL中可以看到。post是通過HTTP post機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個(gè)過程。

  3. 對(duì)于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。

  4. get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。

  5. get安全性非常低,post安全性較高。

  HTTP請(qǐng)求:GET與POST方法的區(qū)別

  HTTP 定義了與服務(wù)器交互的不同方法,最基本的方法是 GET 和 POST。事實(shí)上 GET 適用于多數(shù)請(qǐng)求,而保留 POST 僅用于更新站點(diǎn)。根據(jù) HTTP 規(guī)范,GET 用于信息獲取,而且應(yīng)該是 安全的和冪等的。所謂安全的意味著該操作用于獲取信息而非修改信息。換句話說,GET 請(qǐng)求一般不應(yīng)產(chǎn)生副作用。冪等的意味著對(duì)同一 URL 的多個(gè)請(qǐng)求應(yīng)該返回同樣的結(jié)果。完整的定義并不像看起來那樣嚴(yán)格。從根本上講,其目標(biāo)是當(dāng)用戶打開一個(gè)鏈接時(shí),她可以確信從自身的角度來看沒有改變資源。 比如,新聞?wù)军c(diǎn)的頭版不斷更新。雖然第二次請(qǐng)求會(huì)返回不同的一批新聞,該操作仍然被認(rèn)為是安全的和冪等的,因?yàn)樗偸欠祷禺?dāng)前的新聞。反之亦然。POST 請(qǐng)求就不那么輕 松了。POST 表示可能改變服務(wù)器上的資源的請(qǐng)求。仍然以新聞?wù)军c(diǎn)為例,讀者對(duì)文章的注解應(yīng)該通過 POST 請(qǐng)求實(shí)現(xiàn),因?yàn)樵谧⒔馓峤恢笳军c(diǎn)已經(jīng)不同了(比方說文章下面出現(xiàn)一條注解);

  在FORM提交的時(shí)候,如果不指定Method,則默認(rèn)為GET請(qǐng)求,F(xiàn)orm中提交的數(shù)據(jù)將會(huì)附加在url之后,以?分開與url分開。字母數(shù)字字符原 樣發(fā)送,但空格轉(zhuǎn)換為“+“號(hào),其它符號(hào)轉(zhuǎn)換為%XX,其中XX為該符號(hào)以16進(jìn)制表示的ASCII(或ISO Latin-1)值。GET請(qǐng)求請(qǐng)?zhí)峤坏臄?shù)據(jù)放置在HTTP請(qǐng)求協(xié)議頭中,而POST提交的數(shù)據(jù)則放在實(shí)體數(shù)據(jù)中;

  填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽java課程!害怕學(xué)不會(huì)?助教陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!

預(yù)約申請(qǐng)免費(fèi)聽java課程

  • 地區(qū):
  • 姓名:
  • 手機(jī):

  GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST則沒有此限制。

  在表單里使用”post”和”get”有什么區(qū)別

  在Form里面,可以使用post也可以使用get。它們都是method的合法取值。但是,post和get方法在使用上至少有兩點(diǎn)不同:

  1、Get方法通過URL請(qǐng)求來傳遞用戶的輸入。Post方法通過另外的形式。

  2、Get方式的提交你需要用Request.QueryString來取得變量的值,而Post方式提交時(shí),你必須通過Request.Form來訪問提交的內(nèi)容。

  仔細(xì)研究下面的代碼。你可以運(yùn)行之來感受一下:

  代碼

  

  

  

  

  

  

  

  

  

  

  

  

  <% If Request.QueryString(“Text”) <> ““ Then %>

  通過get方法傳遞來的字符串是: “<%= Request.QueryString(“Text”) %>

  <% End If %>

  <% If Request.Form(“Text”) <> ““ Then %>

  通過Post方法傳遞來的字符串是: “<%= Request.Form(“Text”) %>

  <% End If %>

  說明

  把上面的代碼保存為getpost.asp,然后運(yùn)行,首先測試post方法,這時(shí)候,瀏覽器的url并沒有什么變化,返回的結(jié)果是:

  通過Post方法傳遞來的字符串是: "Hello World"

  然后測試用get方法提交,請(qǐng)注意,瀏覽器的url變成了:

  http://localhost/general/form/getpost.asp?Text=Hello+World

  而返回的結(jié)果是:

  通過get方法傳遞來的字符串是: "Hello World"

  最后再通過post方法提交,瀏覽器的url還是:

  http://localhost/general/form/getpost.asp?Text=Hello+World

  而返回的結(jié)果變成:

  通過get方法傳遞來的字符串是: "Hello World"

  通過Post方法傳遞來的字符串是: "Hello World"

  提示

  通過get方法提交數(shù)據(jù),可能會(huì)帶來安全性的問題。比如一個(gè)登陸頁面。當(dāng)通過get方法提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在URL上。如果:

  1、 登陸頁面可以被瀏覽器緩存;

  2、 其他人可以訪問客戶的這臺(tái)機(jī)器。

  那么,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號(hào)和密碼。所以,在某些情況下,get方法會(huì)帶來嚴(yán)重的安全性問題。

  建議

  在Form中,建議使用post方法。

  get與post的區(qū)別2

  Get:是以實(shí)體的方式得到由請(qǐng)求URI所指定資源的信息,如果請(qǐng)求URI只是一個(gè)數(shù)據(jù)產(chǎn)生過程,那么最終要在響應(yīng)實(shí)體中返回的是處理過程的結(jié)果所指向的資源,而不是處理過程的描述。

  Post:用來向目的服務(wù)器發(fā)出請(qǐng)求,要求它接受被附在請(qǐng)求后的實(shí)體,并把它當(dāng)作請(qǐng)求隊(duì)列中請(qǐng)求URI所指定資源的附加新子項(xiàng),Post被設(shè)計(jì)成用統(tǒng)一的方法實(shí)現(xiàn)下列功能:

  1:對(duì)現(xiàn)有資源的解釋

  2:向電子公告欄、新聞組、郵件列表或類似討論組發(fā)信息。

  3:提交數(shù)據(jù)塊

  4:通過附加操作來擴(kuò)展數(shù)據(jù)庫

  從上面描述可以看出,Get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請(qǐng)求;而Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,要提交的數(shù)據(jù)位于信息頭后面的實(shí)體中。

  很理論化,但是很標(biāo)準(zhǔn),method=“get”并不是從服務(wù)器上獲取數(shù)據(jù),get和post 只是發(fā)送機(jī)制不同,并不是一個(gè)取一個(gè)發(fā)!

  get方法會(huì)在IE地址欄里顯示表示你提交時(shí)候所帶的值;post方法不會(huì)

  1、 get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在URL中可以看到。post是通過HTTP post機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個(gè)過程。

  2、對(duì)于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。兩種方式的參數(shù)都可以用Request來獲得。

  3、get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。

  4、get安全性非常低,post安全性較高。

  5、

跟是一樣的,也就是說,action頁面后邊帶的參數(shù)列表會(huì)被忽視;而跟是不一樣的。

  另外,Get請(qǐng)求有如下特性:它會(huì)將數(shù)據(jù)添加到URL中,通過這種方式傳遞到服務(wù)器,通常利用一個(gè)問號(hào)?代表URL地址的結(jié)尾與數(shù)據(jù)參數(shù)的開端,后面的參數(shù)每一個(gè)數(shù)據(jù)參數(shù)以“名稱=值”的形式出現(xiàn),參數(shù)與參數(shù)之間利用一個(gè)連接符&來區(qū)分。

  Post請(qǐng)求有如下特性:數(shù)據(jù)是放在HTTP主體中的,其組織方式不只一種,有&連接方式,也有分割符方式,可隱藏參數(shù),傳遞大批數(shù)據(jù),比較方便。

  post 地址欄不會(huì)出現(xiàn)一大串?bjnghfgreygt這樣的東西

  如果是get,就會(huì)出現(xiàn)了

  1、Get 方法通過 URL 請(qǐng)求來傳遞用戶的數(shù)據(jù),將表單內(nèi)各字段名稱與其內(nèi)容,以成對(duì)的字符串連接,置于 action 屬性所指程序的 url 后,如[url]http://www.mdm.com/test.asp?name=asd&password=sad[/url],數(shù)據(jù)都會(huì) 直接顯示在 url 上,就像用戶點(diǎn)擊一個(gè)鏈接一樣;Post 方法通過 HTTP post 機(jī)制,將表單內(nèi)各字段名稱與其內(nèi)容放置在 HTML 表頭(header)內(nèi)一起傳送給服務(wù)器端交由 action 屬性能所指的程序處理,該程序會(huì)通過標(biāo)準(zhǔn)輸入(stdin)方式,將表單的數(shù)據(jù)讀出并加以處理

  2、 Get 方式需要使用 Request.QueryString 來取得變量的值;而 Post 方式通過 Request.Form 來訪問提交的內(nèi)容

  3、Get 方式傳輸?shù)臄?shù)據(jù)量非常小,一般限制在 2 KB 左右,但是執(zhí)行效率卻比 Post 方法好;而 Post 方式傳遞的數(shù)據(jù)量相對(duì)較大,它是等待服務(wù)器來讀取數(shù)據(jù),不過也有字節(jié)限制,這是為了避免對(duì)服務(wù)器用大量數(shù)據(jù)進(jìn)行惡意攻擊,根據(jù)微軟方面的說法,微軟對(duì)用 Request.Form() 可接收的最大數(shù)據(jù)有限制,IIS 4 中為 80 KB 字節(jié),IIS 5 中為 100 KB 字節(jié)

  建議:除非你肯定你提交的數(shù)據(jù)可以 一 次 性提交,否則請(qǐng)盡量用 Post 方法

  4、Get 方式提交數(shù)據(jù),會(huì)帶來安全問題,比如一個(gè)登陸頁面,通過 Get 方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在 URL 上,如果頁面可以被緩存或者其他人可以訪問客戶這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的帳號(hào)和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁面常見的問題是,該頁面如果刷新的時(shí)候,會(huì)彈出一個(gè)對(duì)話框

  1、 get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在URL中可以看到。post是通過HTTP post機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個(gè)過程。

  2、 對(duì)于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。兩種方式的參數(shù)都可以用Request來獲得。

  3、get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。

  4、get安全性非常低,post安全性較高。

  5、跟是一樣的,也就是說,action頁面后邊帶的參數(shù)列表會(huì)被忽視;而跟是不一樣的。

責(zé)編:fushihao

上一篇:javascript(JS)完全控制Select下拉框

下一篇: 沒有了

  • 會(huì)計(jì)考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學(xué)歷考試
泉州市| 固原市| 隆子县| 建昌县| 大连市| 将乐县| 于田县| 汉寿县| 襄城县| 墨竹工卡县| 紫金县| 绩溪县| 兴山县| 禹州市| 衡南县| 乌拉特前旗| 南充市| 澜沧| 杭州市| 松滋市| 峨边| 桂平市| 广汉市| 上饶市| 蒙山县| 平阴县| 奉节县| 芮城县| 新泰市| 酉阳| 贵德县| 阿坝| 东阿县| 梁山县| 都昌县| 永州市| 西丰县| 营口市| 株洲县| 广饶县| 天津市|