JavaScript之cookie和客戶端持久性以及腳本化HTTP

cookie和客戶端持久性
1.cookie是Web瀏覽器存儲的少量命名數據,它與某個特定的網頁或網站關聯在一起。JavaScript中的cookie不使用任何加密技術,因而也沒有安全性(儘管以加密的https:連接來傳輸它們會對安全性有所幫助)。
2.因爲cookie數據可以自動地在Web瀏覽器和Web服務器之間傳遞,所以位於服務器端的腳本可以讀寫存儲在客戶端的cookie值。

3.除了名字與值外,每個cookie都有四個可選的屬性,分別控制它的生存期,可見性和安全性。

4.第一個屬性是expires,儘管expires屬性仍然有效,但是它已經被max-age屬性所取代,後者用來設置cookie的生命期。設置這兩個屬性中的任何一個,都會使瀏覽器把cookie保存到一個本地文件中,以便用戶下次訪問這個網頁時能夠再將它讀出來。一旦超過了終止日期,或者超過了max-age的生命期,那個cookie就會被瀏覽器自動地從cookie文件中刪除掉。

5.第二個屬性是path,它指定了與cookie關聯在一起的網頁。默認情況下,cookie會和創建它的網頁以及與這個網頁處於同一個目錄下的網頁和處於該目錄的子目錄下的網頁關聯。

6.第三個屬性是domain。假定由位於catalog.example.com的網頁創建的cookie把自己的path屬性設置成了“/”,把domain屬性設置成了“.example.com”,那麼所有位於catalog.example.com的網頁和所有位於orders.example.com的網頁以及所有位於example.com域的其他服務器上的網頁都能夠訪問這個cookie。

7.最後一個屬性是名爲secure的布爾值,它指定了在網絡上如何傳輸cookie值。默認情況下。cookie是不安全的,也就是說,它們是通過一個普通的,不安全的HTTP連接傳輸的。但是如果將cookie標記爲安全的,那麼它將只在瀏覽器和服務器通過HTTPS或其他的安全協議連接時才被傳輸。

8.現代瀏覽器允許總數cookie多於300個,但是,一些瀏覽器仍然有4KB的大小限制。

9.一旦已經從cookie屬性中提取出了一個cookie的值,就必須基於那個cookie創建器所使用的格式或編碼方法來解釋得到的值。

10.cookie實現客戶端持久性的缺點:數據的大小限制在4KB;即便cookie僅爲客戶端腳本而使用,它們還是要上傳到Web服務器上,以滿足和它們相關的任意Web頁面的要求。當cookie在服務器上沒有使用的時候,造成自帶寬浪費。

11.一個使用https:協議載入的頁面所存儲的數據,無法被一個使用常規http:協議載入的頁面所訪問。

腳本化HTTP


1.同步地使用XMLHttpRequest的時候有一個嚴重的問題:如果Web服務器停止響應,send()函數會阻塞很長一段時間。JavaScript執行停止,並且Web瀏覽器可能看上去像掛起(當然,這和平臺無關)。如果服務器在一個正常頁面載入的過程中掛起,用戶可能只是點擊瀏覽器的"停止"按鈕並嘗試另外一個鏈接或URL。但是,對於XMLHttpRequest來說沒有“停止”按鈕。send()方法並沒有提供任何方式來指定等待時間的最大長度,並且,一旦請求已經發送,客戶端JavaScript的單線程的執行模式也不允許腳本中斷一個同步XMLHttpRequest請求。

2.XMLHttpRequest對象的一個缺點就是它沒有提供指定一個請求的過期值的方法。對於同步的請求來說,這一缺點很嚴重。如果服務器掛起,Web瀏覽器在send()方法中保持阻塞,並且所有處理都被凍結起來。異步請求不會凍結,由於send()方法不會阻塞,Web瀏覽器可以繼續處理用戶事件。然而,還是會有過期的問題。

3.Ajax應用程序的關鍵特徵就是,它使用腳本化的HTTP來與一個Web服務器通信而沒有導致頁面重載。既然交換的數據常常很少,並且瀏覽器不一定解析和提交一個文檔(這關係到樣式表單和腳本),響應時間大大改善,並且結果使得Web應用程序給人的感覺更像是傳統的桌面應用程序。

4.Ajax的警告:第一個問題是可視化反饋;第二個問題和URL有關;第三個問題和後退按鈕有關。

5.Ajax Web應用程序架構最重要的特徵就是它使用XMLHttpRequest對象腳本化HTTP的能力。
發佈了16 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章