1. 程式人生 > >form表單的post,get提交方式分析以及產生的亂碼問題

form表單的post,get提交方式分析以及產生的亂碼問題

Form提供了兩種資料傳輸的方式——get和post。雖然它們都是資料的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對資料產生嚴重的影響。雖然為了方便的得到變數值,Web容器已經遮蔽了二者的一些差異,但是瞭解二者的差異在以後的程式設計也會很有幫助的。

Form中的get和post方法,在資料傳輸過程中分別對應了HTTP協議中的GET和POST方法。二者主要區別如下:

1、Get是用來從伺服器上獲得資料,而Post是用來向伺服器上傳遞資料。

2、Get將表單中資料的按照variable=value的形式,新增到action所指向的URL後面,並且兩者使用“?”連線,而各個變數之間使用“&”連線;Post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到action所指向URL。

3、Get是不安全的,因為在傳輸過程,資料被放在請求的URL中,而如今現有的很多伺服器、代理伺服器或者使用者代理都會將請求URL記錄到日誌檔案中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一同顯示在使用者面前。Post的所有操作對使用者來說都是不可見的。

4、Get傳輸的資料量小,這主要是因為受URL長度限制;而Post可以傳輸大量的資料,所以在上傳檔案只能使用Post(當然還有一個原因,將在後面的提到)。

5、Get限制Form表單的資料集的值必須為ASCII字元;而Post支援整個ISO10646字符集。

6、Get是Form的預設方法。

使用Post傳輸的資料,可以通過設定編碼的方式正確轉化中文;而Get傳輸的資料卻沒有變化。在以後的程式中,我們一定要注意這一點。

_________________________________________________________________________________________________

1、Get 方法通過 URL 請求來傳遞使用者的資料,將表單內各欄位名稱與其內容,以成對的字串連線,置於 action 屬性所指程式的 url 後,如“http://www.mdm.com/test.asp?name=asd&password=sad
”,資料都會直接顯示在 url 上,就像使用者點選一個連結一樣;Post 方法通過 HTTP post 機制,將表單內各欄位名稱與其內容放置在 HTML 表頭(header)內一起傳送給伺服器端交由 action 屬效能所指的程式處理,該程式會通過標準輸入(stdin)方式,將表單的資料讀出並加以處理 2、 Get 方式需要使用 Request.QueryString 來取得變數的值;而 Post 方式通過 Request.Form 來訪問提交的內容 3、Get 方式傳輸的資料量非常小,一般限制在 2 KB 左右,但是執行效率卻比 Post 方法好;而 Post 方式傳遞的資料量相對較大,它是等待伺服器來讀取資料,不過也有位元組限制,這是為了避免對伺服器用大量資料進行惡意攻擊,根據微軟方面的說法,微軟對用 Request.Form() 可接收的最大資料有限制,IIS 4 中為 80 KB 位元組,IIS 5 中為 100 KB 位元組 建議:除非你肯定你提交的資料可以一次性提交,否則請儘量用 Post 方法 4、Get 方式提交資料,會帶來安全問題,比如一個登陸頁面,通過 Get 方式提交資料時,使用者名稱和密碼將出現在 URL 上,如果頁面可以被快取或者其他人可以訪問客戶這臺機器,就可以從歷史記錄獲得該使用者的帳號和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁面常見的問題是,該頁面如果重新整理的時候,會彈出一個對話方塊 建議:出於安全性考慮,建議最好使用 Post 提交資料

相關推薦

formpostget提交方式分析以及產生亂碼問題

Form提供了兩種資料傳輸的方式——get和post。雖然它們都是資料的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對資料產生嚴重的影響。雖然為了方便的得到變數值,Web容器已經遮蔽了二者的一些差異,但是瞭解二者的差異在以後的程式設計也會很有幫助的。 Form中的g

【轉載】form的兩種提交方式submit和button的用法

按鈕 type ssid login false tex .get ons 轉載 1.當輸入用戶名和密碼為空的時候,需要判斷。這時候就用到了校驗用戶名和密碼,這個需要在jsp的前端頁面寫;有兩種方法,一種是用submit提交。一種是用button提交。方法一:在jsp的前端

form的兩種提交方式submit和button的用法

1.當輸入使用者名稱和密碼為空的時候,需要判斷。這時候就用到了校驗使用者名稱和密碼,這個需要在jsp的前端頁面寫;有兩種方法,一種是用submit提交。一種是用button提交。 方法一: 在jsp的前端頁面的頭部插入一個js方法:  function checkUser(

Form的幾種提交方式

text ucc ram rip sub javascrip reg data 方式 <script type="text/javascript"> $(function() { //1、ajax提交 $("#ajaxBtn").click(function

javaweb中表postget提交方式出現亂碼原因

最近在學javaweb遇到了亂碼問題,一直不太明白其中的具體原因,看了這篇文章明白了不少。感覺很有用所以把它轉載過來,方便以後檢視。 一、問題:         編碼問題是JAVA初學者在web開發過程中經常會遇到問題,網上也有大量相關的文章介紹,但其中很

Form的6種提交方式

1.無重新整理頁面提交表單 表單可實現無重新整理頁面提交,無需頁面跳轉,如下,通過一個隱藏的iframe實現,form表單的target設定為iframe的name名稱,form提交目標位當前頁面if

js form傳送資料兩種方式post get)區別

<!DOCTYPE HTML> <html> <head> <title>please enter your title</

純js實現get請求轉formpost請求

如果這個頁面叫param.html那麼你只需要請求 域名/param.html?requestUrl=請求域名&key=value........既可以把原本的 get請求轉換為表單post請求。 <html> <head> <meta

關於http getformpost提交資料大小限制

之前我去面試,面試的人問了我些問題,其中令我印象深刻的就是如題的兩個,回來後特意去查找了一下,關於http get提交資料上限,之前只知道資料上限差不多是幾kb大小,具體為什麼卻沒有了解 httpget是通過url來傳遞資料,url不存在上限的問題,http協

瀏覽器原生 form POST 數據的兩種方式

mes 但是 lba lose -s ipa mvm 默認 字串 我們在提交表單的時候,form表單參數中會有一個enctype的參數。enctype指定了HTTP請求的Content-Type。 常用有兩種:application/x-www-form-urlencod

php後臺接收formpost的資料並存到資料庫

1.form表單demo:task.html <fieldset id="setFiled"> <legend>釋出任務</legend> <form

PHP formpost提交 $_POST接收不到資料

新手,最近在學習PHP,WAMP環境下碰到了同樣的問題,裝完PhpStorm後寫了個表單頁面和一個後臺列印$_POST的測試程式,POST方法接收不到資料,GET和REQUEST可以,另外如果把專案直接放在Apache伺服器的工作目錄下,然後在位址列輸入localhost是可以正常執行的。前面有答主說到了埠

關於form中使用ajax提交ajax無法success的問題

問題背景:我的畢業設計是重構自己以前寫過的一個小網站,之前寫的時候沒有用任何框架,前後臺互動資料靠el表示式、form表單。在完成畢業設計時使用SpringMVC+Spring+MyBatis+JQuery,統一使用ajax來互動資料。 問題再現: html關鍵程式碼<

form多選框提交數據 服務器只能接受到一個數據

表單提交 form 多選 提交過去後表單中name相同的值會被後一個覆蓋,而不會被單獨識別出來。在name名稱後面加上‘[]’即可;如 name=‘user[]‘ 註意下面兩個教程的區別,我很想知道w3c怎麽讀取到的。等待指教; http://www.w3school.com.cn/tags/at

ckeditor.js的使用/form序列化後提交

ckeditor.js的使用/form表單序列化後提交 <script src="../ckeditor/ckeditor.js"></script> <textarea cols="40" rows="5" id="editor" name="desc"

Servlet 獲取前端Form資料並實現請求重定向、請求轉發

1.前端介面 編寫一個最簡單的登入介面: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title&g

django form驗證使用Ajax提交併返回提示資訊(JSON傳遞資料)

直接上程式碼: HTML,由Form外掛自動生成input標籤 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax提交

formpost的研究

========================get方式提交form 預設方式為get,表單元素必須要有name屬性,最後各個表單元素的值(如果是file型別,值為檔名)會拼接成get方式的URL(帶有querystring)。 如果action屬性的URL原來帶有querystring,

一個form上傳和接收多個相同的name欄位引數

一般我們在同一個表單中,都會提交不同的name欄位。可是,我遇到了提交相同欄位的情況,例子如下: <form action="test_receive.php" method="post"> <div> <

js-form資料轉為json提交

JSON.stringify($('#categoryForm').serializeObject() /** * 自動將form表單封裝成json物件 */ $.fn.serializeObject = function() {