国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

HTTP客戶端識別與Cookie機制

2024-04-27 15:06:46
字體:
來源:轉載
供稿:網友
HTTP識別用戶的幾種技巧* 承載用戶身份信息的HTTP首部* 客戶端ip地址跟蹤,通過用戶的IP地址對其進行識別* 用戶登錄,用認證方式識別用戶* 胖URL,一種在URL中潛入識別信息的技術* cookie,一種強大高效的持久身份識別技術## 一,承載用戶相關信息的HTTP首部>* from 用戶的email地址少用* user-agent 用戶的瀏覽器軟件 將用戶所用的瀏覽器信息告知服務器* referer 用戶是從這個頁面跳轉過來的 提供用戶來源頁的URL*  anthorization 用戶名和密碼 * client-ip 客戶端ip * x-forwarded-for 客戶端ip * cookie 服務器生成的id標簽 ## 二,客戶端IP地址早期web先鋒嘗試將客戶端IP地址作為一種表示形式使用**缺點:**>使用ip來標識客戶端,存在很多缺點。客戶端ip描述的是機器,不是用戶。很多因特網機器是動態隨機分配ip。如果通過代理和網關訪問服務器,那么得到的是代理的ip,而不是客戶端的。 ## 三,用戶登錄直接主動讓用戶登錄來識別用戶,作為標識。可以向瀏覽器發送一條http響應代碼是401 Login Required,并添加www-authentication首部,然后瀏覽器就會顯示一個登錄對話框。只要用戶輸入對了用戶名和密碼,服務器就可以識別用戶了。瀏覽器每次在請求中,向服務器發送authorization首部作為一種身份的標志。**缺點:**登陸多個web站點太繁瑣,站點瀏覽跳轉時需要在每個站點登陸,還可能需要記住不同密碼。 ## 四,胖URLweb站點為每個用戶生成特定的URL來追蹤用戶的身份,一般是對真正的URL進行拓展,在URL開始或結束的地方追加一些狀態信息這種包含了用戶狀態信息的URL稱為胖URL**缺點:*** 丑陋的URL* 無法共享URL因為url中有用戶信息,共享會透露個人信息* 破壞緩存每個人的URL都不一樣,所以不需要緩存了* 額外的服務器負荷* 非持久 ## 五,cookiecookie是當前用戶識別,實現持久會話最好的方式#### cookie類型* 會話cookie瀏覽器退出,會話cookie就會刪除* 持久cookie在設置的時間內不會刪除#### cookie是如何工作的>用戶首次訪問站點的時候,web服務器對用戶一無所知。web服務器希望這個用戶會再次回來,所以給這個用戶一個獨有的cookie。cookie中包含了一個由名字=值構成的任意列表。通過設置set-cookie,或set-cookie2http響應首部,設置cookie值。瀏覽器會記住從服務器返回的set-cookie首部中的內容,并將cookie集存儲到瀏覽器的cookie數據庫中。將來用戶訪問同一個站點時,瀏覽器會將cookie中的值放在cookie首部,傳給服務器。 #### cookie灌:客戶端狀態cookie的基本思想就是讓瀏覽器積累一組服務器的信息,每次訪問服務器,都將這些信息提供給他。因此瀏覽器要負責存儲cookie信息,所以稱之為客戶端狀態。* 網景的cookie 網景將cookie存儲在一個名為cookie.txt的文本文件中。每一行代表一個cookie,有7個tab分割的字段。![](http://upload-images.jianshu.io/upload_images/2015490-9efb4dc384016305.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)* 微軟的internet explorer的cookie 微軟的IE講cookie儲存在高速緩存目錄下獨立的文本文件中#### 不同站點使用不同的cookie瀏覽器內部的cookie罐中可以有成百上千個cookie,但瀏覽器不會將每個cookie都發送給所有的站點,實際上,通常只向每個站點發送2-3個cookie,原因如下:* 對所有這些cookie字節進行傳輸會嚴重降低性能。* cookie中包含的服務器特有的名值對,所以對大部分站點來說,大多數cookie都只是無法識別的誤用數據* 將所有的cookie發送給所有站點會引發潛在的隱私問題。總之,瀏覽器只向服務器發送服務器產生的那些cookie。##### cookie的域屬性產生cookie的服務器可以向set-cookie響應首部添加一個Domain屬性來控制哪些站點可以看到那些cookie,##### cookie路徑屬性cookie規范甚至允許用戶將cookie與部分web站點關聯起來,可以通過Path屬性來實現這一功能,在這個屬性列出的URL路徑前綴下所有的cookie都是有效的。因此cookie就是由服務器貼到客戶端上,由客戶端維護的狀態片段,只會回送給那些合適的站點,下面我們來更仔細地看看cookie的技術和標準。#### cookie成分cookie0與cookie1**cookie0:**>name=value 服務器可以創建任意的name=value關聯expires 可選的,過期時間domain 可選的,瀏覽器只向指定的域中的服務器主機名發送cookie。如果沒有設置,就默認產生set-cookie響應的服務器主機名。path 可選的,可以為服務器上特定的文檔產生cookie。如果沒有設置,默認是產生這個響應的url的路徑。secure 可選的,只有在使用ssl,才會發送cookie。客戶端發送請求時,會將所有與域、路徑、和安全過濾器相匹配的、未過期的cookie都發送給這個站點。 **cookie:**>允許瀏覽器退出時,強制銷毀cookie使用相對秒數,來控制cookie的生存時間通過url端口號,控制cookie作用域為實現互操作性,實現的版本號 #### cookie會話跟蹤可以用cookie在用戶與某個web站點進行多項事物處理時對用戶進行跟蹤,電子商務web站點用會話cookie在用戶瀏覽時記錄下用戶購物車信息。#### cookie與緩存* 要特別小心,不能分配用過的cookie,不能向用戶展示其他人私有文檔的內容* 如果向多個用戶發送了相同的SetCookier首部,可能會破壞用戶的定位#### cookie,安全性和隱私cookie是可以禁止的,并且可以通過日志分析和其他方式實現大部分跟蹤記錄。cookie自身不是很大的安全隱患。但是潛在的濫用情況,總是存在的。第三方站點使用持久cookie跟蹤用戶就是一種最大的濫用。*這種與ip地址和referer首部結合起來,營銷公司就可以構建相當準確的用戶檔案和瀏覽模式*。如果小心的使用cookie,那么cookie帶來的好處還是要大于風險的。## javascript設置,讀取,刪除cookie方法Javascript是運行在客戶端的腳本,因此一般是不能夠設置session的,因為Session是運行在服務器端的。而cookie是運行在客戶端的,所以可以用JS來設置cookie.cookie是以鍵值對的形式保存的,即key=value的格式。各個cookie之間一般是以“;”分隔。#### JS設置cookie```document.cookie="name="+username;// 加上終止時間document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();```#### JS讀取cookie直接document.cookie就可以獲取,但要獲取指定名稱的cookie值需要這樣做:```// 該函數返回名稱為name的cookie值,如果不存在則返回空,其實現如下: <script language="JavaScript" type="text/javascript"> <!-- function getCookie(name){ var strCookie=document.cookie; var arrCookie=strCookie.split("; "); for(var i=0;i<arrCookie.length;i++){ var arr=arrCookie[i].split("="); if(arr[0]==name)return arr[1]; } return ""; } //--> </script> ```#### 刪除cookie為了刪除一個cookie,可以將其過期時間設定為一個過去的時間,例如:```//獲取當前時間var date=new Date();//將date設置為過去的時間date.setTime(date.getTime()-10000);//將userId這個cookie刪除document.cookie="userId=828; expires="+date.toGMTString(); ```**方法封裝**```var cookie = {    set:function(key,val,time){//設置cookie方法        var date=new Date(); //獲取當前時間        var expiresDays=time;  //將date設置為n天以后的時間        date.setTime(date.getTime()+expiresDays*24*3600*1000); //格式化為cookie識別的時間        document.cookie=key + "=" + val +";expires="+date.toGMTString();  //設置cookie    },    get:function(key){//獲取cookie方法        /*獲取cookie參數*/        var getCookie = document.cookie.replace(/[ ]/g,"");  //獲取cookie,并且將獲得的cookie格式化,去掉空格字符        var arrCookie = getCookie.split(";")  //將獲得的cookie以"分號"為標識 將cookie保存到arrCookie的數組中        var tips;  //聲明變量tips        for(var i=0;i<arrCookie.length;i++){   //使用for循環查找cookie中的tips變量            var arr=arrCookie[i].split("=");   //將單條cookie用"等號"為標識,將單條cookie保存為arr數組            if(key==arr[0]){  //匹配變量名稱,其中arr[0]是指的cookie名稱,如果該條變量為tips則執行判斷語句中的賦值操作                tips=arr[1];   //將cookie的值賦給變量tips                break;   //終止for循環遍歷            }        },      delete:function(key){ //刪除cookie方法         var date = new Date(); //獲取當前時間         date.setTime(date.getTime()-10000); //將date設置為過去的時間         document.cookie = key + "=v; expires =" +date.toGMTString();//設置cookie        }        return tips;    }}```使用方式:cookie.get("uesr"); // 獲取鍵名為user的cookie## cookies,sessionStorage和localStorage的區別以前持久化的存儲一些有用的數據一般是通過服務器端的數據庫或者瀏覽器端的cookie來實現隨著HTML5的出現,web開發又有了兩種選擇:Web Storage和Web SQL Database.Web Storage有兩種形式localStorage(本地存儲)和sessionStorage(會話存儲)* localStorage:瀏覽器關閉了數據仍然可以保存下來,并可用于所有同源(相同的域名、協議和端口)窗口(或標簽頁)永久存儲,永不失效,除非手動刪除*  sessionStorage:數據存儲在窗口對象中,窗口關閉后對應的窗口對象消失,存儲的數據也會丟失。就是瀏覽器窗口關閉就失效了。**使用**使用 local storage和session storage主要通過在js中操作這兩個對象來實現,分別為window.localStorage和window.sessionStorage. 這兩個對象均是Storage類的兩個實例,Storage類的屬性和方法。![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2015490-a5dea1ddea536d7a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)## cookie與session的區別于聯系* cookie與session的區別:cookie數據保存在客戶端,session數據保存在服務器端* cookie和session的共同之處:cookie和session都是用來跟蹤瀏覽器用戶身份的會話方式。
上一篇:用CSS畫出三角形

下一篇:cookie總結

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华容县| 肇东市| 琼中| 象州县| 龙岩市| 建水县| 北流市| 文山县| 南宁市| 松桃| 定陶县| 咸阳市| 汉寿县| 沁水县| 高密市| 金华市| 瑞金市| 涿鹿县| 娄烦县| 隆尧县| 南雄市| 关岭| 安西县| 缙云县| 江北区| 苏尼特左旗| 玉屏| 延川县| 射阳县| 兴国县| 焉耆| 土默特左旗| 永丰县| 策勒县| 瑞丽市| 西盟| 林芝县| 汶上县| 黔南| 中西区| 乌拉特后旗|