所謂非同步,在這裡簡單地解釋就是:向伺服器傳送請求的時候,我們不必等待結果,而是可以同時做其他的事情,等到有了結果它自己會根據設定進行後續操作,與此同時,頁面是不會發生整頁重新整理的,提高了使用者體驗。
手寫乙個ajax
function
creatxhr()
else
return xhr;
}let xhr =
creatxhr()
; xhr.
onreadystatechange
=function()
else}}
xhr.
open
('post'
,url,
true);
xhr.
setrequestheader
("content-type",)
;//請求
xhr.
send()
;
ajax
解決瀏覽器快取問題?
在ajax
傳送請求前加上anyajaxobj.setrequestheader("if-modified-since","0")
。
在ajax
傳送請求前加上anyajaxobj.setrequestheader("cache-control","no-cache")
。
在url
後面加上時間戳:"nowtime=" + new date().gettime();
。
如果是使用jquery
,直接這樣就可以了$.ajaxsetup()
。這樣頁面的所有ajax
都會執行這條語句就是不需要儲存快取記錄。
同步的概念應該是來自於os中關於同步的概念:不同程序為協同完成某項工作而在先後次序上調整(通過阻塞,喚醒等方式).同步強調的是順序性.誰先誰後.非同步則不存在這種順序性.非同步:瀏覽器訪問伺服器請求,使用者正常操作,瀏覽器後端進行請求。等請求完,頁面不重新整理,新內容也會出現,使用者看到新內容。
如何解決跨域問題?
jsonp
、cors(跨域資源共享)、iframe
、window.name
、window.postmessage
、伺服器上設定**頁面
怎麼理解不同源
詳細說說jsonp
基本思想
什麼是xss攻擊?如何預防?
比如使用者輸入:,
儲存後最終儲存的會是
在展現時瀏覽器會對這些字元轉換成文字內容顯示,而不是一段可執行的**。
cookie hashing(所有表單都包含同乙個偽隨機值)
這可能是最簡單的解決方案了,因為攻擊者不能獲得第三方cookie(理論上),所以表單中的資料也就構造失敗了:>
構造加密的cookie資訊
在表單裡增加hash值,以認證這確實是使用者傳送的請求
然後在服務端裡進行hash值驗證
驗證碼
這個方案的思路是:每次使用者提交都需要使用者在表單中填寫乙個上的隨機字串,這個方案可以完全解決
csrf
,但易用性方面似乎不太好還有聽聞是驗證碼的使用涉及了乙個被稱為mhtml的bug,可能在某些版本的微軟ie中受影響。
one-time tokens (不同的表單包含乙個不同的偽隨機值)
在實現one-time tokens時,需要注意一點:就是「並行會話的相容」。如果使用者在乙個站點上同時開啟了兩個不同的表單,csrf保護措施不應該影響到他對任何表單的提交。考慮一下如果每次表單被裝入時站點生成乙個偽隨機值來覆蓋以前的偽隨機值將會發生什麼情況:使用者只能成功地提交他最後開啟的表單,因為所有其他的表單都含有非法的偽隨機值。必須小心操作以確保csrf保護措施不會影響選項卡式的瀏覽或者利用多個瀏覽器視窗瀏覽乙個站點。
前端面試題(四)
在cdn中實現原理是 給源站網域名稱新增cnmae,別名為加速節點的網域名稱。當使用者向源站發起請求時,dns伺服器解析源站網域名稱時會發現有cnmae記錄,這時dns伺服器會向cname網域名稱發起請求,請求會被排程至加速節點的網域名稱。instanceof instanceof 的內部機制是通過...
前端面試題(四)
const showthis var obj showthis obj.showthis 兩者都指向window,因為箭頭函式中的this為大括號外面的this。var obj obj.showthis 這個也指向window 0.1 0.2 等於 0.3 嗎?為什麼?解決方案?0.1 0.2 to...
web前端面試題 http協議
1.http全稱 超文字協議傳輸 2.http工作流程 首先客戶機與伺服器需要建立連線。只要單擊某個超級鏈結,http的工作開始。1.收線客戶機與伺服器需要建立連線,只要單擊某個超級連線,http的工作開始 2.建立連線後,客戶機傳送乙個請求給伺服器,請求方式的格式為 統一資源識別符號 url 協議...