web也是區分前端與后端的,session\cookie辨析


 1 <1>Ajax交互方式
 2 Ext.Ajax.request( 
 3     {
 4         //被用來向服務器發起請求默認的url
 5         url : "",
 6         //請求時發送后台的參數,既可以是Json對象,也可以直接使用“name = value”形式的字符串
 7         params : {
 8             name:'value'
 9         },
10         //請求時使用的默認的http方法
11         method : "post",
12         //請求成功時回調函數
13         success : function() {
14             Ext.ux.Toast.msg("信息提示", "成功刪除所選記錄!");
15         },
16         //請求失敗時回調函數
17         failure : function() {
18             Ext.ux.Toast.msg("信息提示", "信息刪除出錯,請聯系管理員!");
19         }
20     }
21 );
22 <2>Form交互方式
23 this.formPanel = new Ext.FormPanel(
24     {
25         url : ""
26     }
27 );
28 //提交數據
29 formPanel.getForm().submit(
30     {
31         method : "post",
32         params : {
33             name:'value'
34         },
35         waitMsg : "正在提交數據",
36         success : function(b, c) {
37             Ext.ux.Toast.msg("操作信息", "提交成功!");
38         },
39         failure : function(b, c) {
40             Ext.ux.Toast.msg("操作信息", "提交失敗!");
41         }
42     }
43 );
44 //加載數據
45 formPanel.getForm().load(
46     {
47         deferreRender : false,
48         url : "",
49         method : "post",
50         waitMsg : "正在載入數據",
51         success : function(e, g) {
52             var num = g.result.data.num;
53             var numCmp = Ext.getCmp("num");
54             numCmp.setValue(num);
55             Ext.ux.Toast.msg("操作信息", "載入成功");
56         },
57         failure : function(a, b) {
58             Ext.ux.Toast.msg("操作信息", "載入失敗");
59         }
60     }
61 );
View Code
 1  
 2 <table width="283" height="85" border="1" cellpadding="0" cellspacing="0"> 
 3 <form name="name1" method="post" action="abc.php"> 
 4 <tr> 
 5 <td width="114" height="30" align="center" >管理員:</td> 
 6 <td width="163" height="30" align="center"><input name="username" type="text" /></td> 
 7 </tr> 
 8 <tr> 
 9 <td align="center">密 碼:</td> 
10 <td height="30" align="center"><input name="password" type="password" /></td> 
11 </tr> 
12 <tr> 
13 <td> </td> 
14 <td height="25">  <input name="submit" type="submit" value="submit" /></td> 
15 </tr> 
16 </form> 
17 </table> 
18 <?php 
19 if(!isset($_POST['submit'])) 
20 return ; 
21 if($_POST['submit']=='submit'){ 
22 $username = $_POST['username']; 
23 $password = $_POST['password']; 
24 } 
25 echo <<<EOT 
26 <table width="284" border="1" cellpadding="0" cellspacing="0"> 
27 <tr> 
28 <td height="25" align="center"> 管理員:$username</td> 
29 </tr> 
30 <tr> 
31 <td height="25" align="center" valign="middle" class="style2">密碼:$password</td> 
32 </tr> 
33 </table> 
34 EOT; 
35 ?> 
View Code

 

今天就嵌入式設備的網頁訪問做了一下思路的整理。

1.設備的頁面訪問不只是有web前端,還有服務器端的編程。我之前非常看不起PHP,因為一直以為PHP就是一類ASP.NET級別的語言。現在理清思路之后才發現PHP主要做的是CGI的工作,也就是網站的服務器端的數據處理的工作。上面的代碼是ExtJS中,需要與后端代碼進行數據交互的幾個例子。

2.第二部分代碼就是PHP獲取前端的提交數據的一個例子。在C#中貌似之前用過HttpWebRequest/HttpWebResponse來進行與后端數據的交互,因為這個時候已經不用ASP.net這種“一體化”的模式了,使用的是MVC的架構,所以能夠了解一點。

===========================================================================================================

后面說一下Cookie以及session的辨析。

 1.session保存在服務器,客戶端不知道其中的信息;cookie保存在客戶端,服務器能夠知道其中的信息。   
    
 2.session中保存的是對象,cookie中保存的是字符串。   
    
 3.session不能區分路徑,同一個用戶在訪問一個網站期間,所有的session在任何一個地方都可以訪問到。而cookie中如果設置了路徑參數,那么同一個網站中不同路徑下的cookie互相是訪問不到的。   
    
4.session一般也需要借助cookie來實現目的。

             因為http是無狀態的協議,客戶每次讀取web頁面時,服務器都打開新的會話,而且服務器也不會自動維護客戶的上下文信息,那么要怎么才能實現網上商店中的購物車呢,session就是一種保存上下文信息的機制,它是針對每一個用戶的,變量的值保存在服務器端,通過SessionID來區分不同的客戶,session是以cookie或URL重寫為基礎的,默認使用cookie來實現,系統會創造一個名為JSESSIONID的輸出cookie,我們叫做session cookie,以區別persistent cookies,也就是我們通常所說的cookie,注意session cookie是存儲於瀏覽器內存中的,並不是寫到硬盤上的,這也就是我們剛才看到的JSESSIONID,我們通常情是看不到JSESSIONID的,但是當我們把瀏覽器的cookie禁止后,web服務器會采用URL重寫的方式傳遞Sessionid,我們就可以在地址欄看到 sessionid=KWJHUG6JJM65HS2K6之類的字符串。
             明白了原理,我們就可以很容易的分辨出persistent cookies和session cookie的區別了,網上那些關於兩者安全性的討論也就一目了然了,session cookie針對某一次會話而言,會話結束session cookie也就隨着消失了,而persistent cookie只是存在於客戶端硬盤上的一段文本(通常是加密的),而且可能會遭到cookie欺騙以及針對cookie的跨站腳本攻擊,自然不如 session cookie安全了。
             通常session cookie是不能跨窗口使用的,當你新開了一個瀏覽器窗口進入相同頁面時,系統會賦予你一個新的sessionid,這樣我們信息共享的目的就達不到了,此時我們可以先把sessionid保存在persistent cookie中,然后在新窗口中讀出來,就可以得到上一個窗口SessionID了,這樣通過session cookie和persistent cookie的結合我們就實現了跨窗口的session tracking(會話跟蹤)。
            在一些web開發的書中,往往只是簡單的把Session和cookie作為兩種並列的http傳送信息的方式,session cookies位於服務器端,persistent cookie位於客戶端,可是session又是以cookie為基礎的,明白的兩者之間的聯系和區別,我們就不難選擇合適的技術來開發web service了

參考:

http://www.ylzx8.cn/web/web/992672.html 

http://www.cnblogs.com/xulb597/archive/2012/07/02/2573252.html 

http://blog.csdn.net/sjf0115/article/details/8963964


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM