HTTPS
HTTP+加密(SSL、TLS)+認證+完整性保護 = HTTPS;javascript
GET和POST的區別
- get拉取數據,post傳輸數據
- get請求能被瀏覽器主動緩存,post不會(除非手動)
- get請求在URL中傳送的參數是有長度限制的
- get請求參數在URL中傳遞,post在request body中傳遞
- get請求參數會保留在瀏覽器歷史記錄裏面
- get請求在瀏覽器回退上無影響,post會再次請求一次
閉包、閉包缺點
優勢:前端
- 保護函數內的變量安全,增強了封裝性
- 在內存中維持一個變量(用的太多就變成了缺點,佔內存)
- 方便調用上下文的局部變量。
- 邏輯連續,當閉包做爲另外一個函數調用的參數時,避免你脫離當前邏輯而單獨編寫額外邏輯。
缺點:java
- 返回閉包的函數是個很是大的函數。
- 常駐內存,會增大內存使用量,使用不當很容易形成內存泄露。
- 內存浪費問題,無效內存的產生。
注意:web
- 因爲閉包會使得函數中的變量都被保存在內存中,內存消耗很大,因此不能濫用閉包,不然會形成網頁的性能問題,在IE中可能致使內存泄露。
- 解決方法是,在退出函數以前,將不使用的局部變量所有刪除。
Ajax特色以及優缺點
優勢:ajax
- 頁面無刷新,在頁面內與服務器通訊,給用戶的體驗很是好。
- 使用異步方式與服務器通訊,不須要打斷用戶的操做,具備更加迅速的響應能力。
- ajax的原則是「按需取數據」,能夠最大程度的減小冗餘請求,和響應對服務器形成的負擔。
- 基於標準化的並被普遍支持的技術,不須要下載插件或者小程序。
缺點:小程序
- ajax幹掉了back按鈕,即對瀏覽器後退機制的破壞。後退按鈕是一個標準的web站點的重要功能,可是它無法和js進行很好的合做。(,在Gmail下面是能夠後退的,可是,它也並不能改變ajax的機制,它只是採用的一個比較笨可是有效的辦法,即用戶單擊後退按鈕訪問歷史記錄時,經過建立或使用一個隱藏的IFRAME來重現頁面上的變動。)
- 安全問題:ajax技術就如同對企業數據創建了一個直接通道。這使得開發者在不經意間會暴露比之前更多的數據和服務器邏輯。
- 對搜索引擎的支持比較弱;
- 破壞了程序的異常機制。
前端安全
- 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中沒有塊級做用域,可是能夠用閉包實現相似功能。