跨域有哪幾種方式
1.jsonp跨域
2.CORS跨域資源共享
3.iframe標簽跨域
4.在webpack中通過配置devServer的方式跨域
5.通過集成環境(本地模擬服務器, apache或者tomcat)跨域
6.使用chrome瀏覽器插件跨域
如果是在小程序中,需要配置你的https服務器白名單。
cookies,sessionStorage和localStorage的區別
首先共同點:這三個都儲存在用戶本地。
區別:cookie有個數和大小限制(50個/4kb)。刪除的時候需要通過設置過期時間來刪除。
sessionStorage和localStorage是html5中新增加的用于用戶本地數據持久化的解決方案,用于替代cookie。
這倆單一條數據的儲存空間可以達到5M,但是sessionStorage的生命周期只存在于你瀏覽器打開的時候,
當你關閉的時候sessionStorage會自動清除。
localStorage則不受限制,在設置以后,需要通過clear方法刪除。
vue-router query和params傳參有什么區別
首先我們知道vueroute傳參其實走的就是url中的post和get。
如果是query,表示get,你的參數會用明文的形式保存在瀏覽器地址中,這樣用戶會看到參數,可能會對安全性上造成一些隱患。但是,
這樣做有一個好處就是,當用戶刷新瀏覽器的時候,參數依然存在。你的相應頁面不會因為參數的丟失導致錯誤。
如果是params,表示post,你的參數不會顯示在瀏覽器地址中,用戶看不到參數,只有你接收的頁面通過$route.params.參數名來接收。好處是,安全性能高,缺點是這個參數保存在內存中,你一旦刷新頁面就不存在了。
前后端分離如何保護數據傳輸安全性
通過token,在ajax請求中把token添加到headers上。
如何處理ajax常見錯誤
ajax有一個error屬性,比如:
$.ajax({
type:"get",
url:url,
success:function (res) {
//...
}),
error: function (err) { //ajax請求失敗時返回 返回的err是一個對象
if(err.status>=400&&err.status<500){
window.location.href="./404.html"
}else if(err.status>=500&&err.status<600){
window.location.href="./500.html"
}else{
alert(err.status + '(' + err.statusText + ')');
//返回ajax請求失敗的值 如(404 not find) 讓用戶知道是請求報錯了
}
}
}});
ajax失敗以后會返回一個error對象,這個error對象有一個status屬性,就是返回的錯誤值。
我們可以在這里為用戶制作幾個錯誤頁面,或者讓用戶跳轉回首頁。