js今日小結—Ajax、前端安全、GET&POST、閉包、HTTPS

HTTPS

HTTP+加密(SSL、TLS)+認證+完整性保護 = HTTPS;javascript

GET和POST的區別

  • get拉取數據,post傳輸數據
  • get請求能被瀏覽器主動緩存,post不會(除非手動)
  • get請求在URL中傳送的參數是有長度限制的
  • get請求參數在URL中傳遞,post在request body中傳遞
  • get請求參數會保留在瀏覽器歷史記錄裏面
  • get請求在瀏覽器回退上無影響,post會再次請求一次

閉包、閉包缺點

優勢:前端

  1. 保護函數內的變量安全,增強了封裝性
  2. 在內存中維持一個變量(用的太多就變成了缺點,佔內存)
  3. 方便調用上下文的局部變量。
  4. 邏輯連續,當閉包做爲另外一個函數調用的參數時,避免你脫離當前邏輯而單獨編寫額外邏輯。

缺點:java

  1. 返回閉包的函數是個很是大的函數。
  2. 常駐內存,會增大內存使用量,使用不當很容易形成內存泄露。
  3. 內存浪費問題,無效內存的產生。

注意:web

  1. 因爲閉包會使得函數中的變量都被保存在內存中,內存消耗很大,因此不能濫用閉包,不然會形成網頁的性能問題,在IE中可能致使內存泄露。
  2. 解決方法是,在退出函數以前,將不使用的局部變量所有刪除。

Ajax特色以及優缺點

優勢:ajax

  1. 頁面無刷新,在頁面內與服務器通訊,給用戶的體驗很是好。
  2. 使用異步方式與服務器通訊,不須要打斷用戶的操做,具備更加迅速的響應能力。
  3. ajax的原則是「按需取數據」,能夠最大程度的減小冗餘請求,和響應對服務器形成的負擔。
  4. 基於標準化的並被普遍支持的技術,不須要下載插件或者小程序。

缺點:小程序

  1. ajax幹掉了back按鈕,即對瀏覽器後退機制的破壞。後退按鈕是一個標準的web站點的重要功能,可是它無法和js進行很好的合做。(,在Gmail下面是能夠後退的,可是,它也並不能改變ajax的機制,它只是採用的一個比較笨可是有效的辦法,即用戶單擊後退按鈕訪問歷史記錄時,經過建立或使用一個隱藏的IFRAME來重現頁面上的變動。)
  2. 安全問題:ajax技術就如同對企業數據創建了一個直接通道。這使得開發者在不經意間會暴露比之前更多的數據和服務器邏輯。
  3. 對搜索引擎的支持比較弱;
  4. 破壞了程序的異常機制。

前端安全

  • XSS:(cross-site scripting)跨域腳本攻擊;
    原理:,不需登陸驗證,向頁面注入js腳本,讓你的js腳本執行有誤;
    解決:(1)經過set-cookie的HTTPonly屬性來加以限制,使得cookie不被JavaScript腳本訪問到;(2)輸入檢查:驗證,特殊字符過濾掉;(3)輸出檢查。
  • CRSF:(cross-siterequest forgery)跨站資源僞造;
    原理:以用戶註冊登陸了A網站,A網站給他一個cookie,當該用戶訪問B網站時,B網站給用戶一個引誘點擊,使得該用戶點擊進入A網站。(用戶在網站登陸過,或者網站有漏洞);
    解決:(1)Token驗證;(2)Referer驗證(頁面來源);(3)隱藏令牌(與Token相似,Token隱藏在http頭中)

JavaScript做用域類型(全局做用域、函數做用域、塊級做用域);

  • 全局變量:聲明在函數外部的變量(全部沒有var直接賦值的變量都屬於全局變量);
  • 局部變量:聲明在函數內部的變量(全部沒有var直接賦值的變量都屬於全局變量)
    vari=100;//顯式申明
    i=100;//隱式申明
    函數中使用var關鍵字進行顯式申明的變量是作爲局部變量,而沒有用var關鍵字,使用直接賦值方式聲明的是全局變量。 
  • 全局變量在整個上下文都有效只是在沒有賦值以前調用,會輸出undefined
  • 函數做用域是針對局部變量來講的,在函數中定義的變量在函數外不能獲取
  • JavaScript有沒有塊級做用域;
    js中沒有塊級做用域,可是能夠用閉包實現相似功能。
相關文章
相關標籤/搜索