HTML中表單利用 post 提交與利用 get 提交時的區別
阿新 • • 發佈:2018-12-31
先利用HTML的<form>表單寫一個簡單的註冊頁面
HTML程式碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>註冊頁面</title> </head> <fieldset> <legend>註冊區域</legend> <form action="http://localhost:12345" method="post"> <table border="1" bordercolor="#0099FF" width="70%" cellpadding="10" cellspacing="0"> <tr> <th colspan="2">註冊頁面</th> </tr> <tr> <td>使用者名稱:</td> <td><input type="text" name="user" /></td> </tr> <tr> <td>密碼:</td> <td><input type="password" name="psw" /></td> </tr> <tr> <td>確認密碼:</td> <td><input type="password" name="repsw" /></td> </tr> <tr> <td>性別:</td> <td> <input type="radio" name="sex" value="nan" />男 <input type="radio" name="sex" value="nv" />女 </td> </tr> <tr> <td>技術:</td> <td> <input type="checkbox" name="tech" value="java" />JAVA <input type="checkbox" name="tech" value="jsp" />JSP <input type="checkbox" name="tech" value="html" />HTML </td> </tr> <tr> <td>國家:</td> <td> <select name="country"> <option value="none">--選擇國家--</option> <option value="cn">中國</option> <option value="en">英國</option> <option value="us">美國</option> </select> </td> </tr> <tr> <th colspan="2"> <input type="submit" value="提交資料" /> <input type="reset" value="清除資料" /> </th> </tr> </table> </form> </fieldset> <body> </body> </html>
頁面效果如下:
再寫一個伺服器端的程式碼
RegServer.java 程式碼如下:輸入資料:class RegServer { public static void main(String[] args) throws Exception{ ServerSocket ss = new ServerSocket(12345); Socket s = ss.accept(); InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); System.out.println(new String(buf,0,len)); OutputStream out = s.getOutputStream(); PrintWriter pw = new PrintWriter(out,true); pw.println("<h1>註冊成功</h1>"); s.close(); ss.close(); } }
提交資料利用 post 時,伺服器端響應如下:
網站位址列顯示:http://localhost:12345/
使用者提交的資訊不會在位址列出現
提交資料利用 get 時,伺服器端響應如下:
網站位址列顯示:http://localhost:12345/?user=Tsang&psw=123456&repsw=123456&sex=nan&tech=java&tech=jsp&tech=html&country=us
使用者提交的資訊會在位址列出現
總結:在form提交的時候,如果不指定Method,則預設為get請求,Form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣傳送,但空格轉換為“+“號,其它符號轉換為%XX,其中XX為該符號以16進製表示的ASCII(或ISOLatin-1)值。get請求請提交的資料放置在HTTP請求協議頭中,而post提交的資料則放在實體資料中;
get方式提交的資料最多隻能有1024位元組,而post則沒有此限制。
通過get方法提交資料,可能會帶來安全性的問題。比如一個登陸頁面。當通過get方法提交資料時,使用者名稱和密碼將出現在URL上。如果:
1、 登陸頁面可以被瀏覽器快取;
2、 其他人可以訪問客戶的這臺機器。
那麼,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號和密碼。所以,在某些情況下,get方法會帶來嚴重的安全性問題。
在Form中,建議使用post方法。