JSON Web Token (JWT) 是一種基於token 的認證方案。 前端
在人們大規模地開始Web應用的時候,咱們在受權的時候遇到了一些問題,而這些問題不是Cookie所能解決的。Cookie存在一些明顯的問題:不能支持跨域、而且不是無狀態的、不能使用CDN、與系統耦合等等。除了解決上面的問題,它還能夠提升性能等等。基於Session的受權機制須要服務端來保存這個狀態,而使用JWT則能夠跳過這個問題,而且使咱們設計出來的API知足RESTful規範。即,咱們API的狀態應該是沒有狀態的。所以人們提出了JWT來解決這一系列的問題。 跨域
經過JWT咱們能夠更方便地寫出適用於前端應用的認證方案,如登錄、註冊這些功能。當咱們使用JWT來實現咱們的註冊、登錄功能時,咱們在登錄的時候將向咱們的服務器發送咱們的用戶名和密碼,服務器驗證後將生成對應的Token。在下次咱們進行頁面操做的時候,如訪問/Dashboard時,發出的HTTP請求的Header中會包含這個Token。服務器在接收到請求後,將對這個Token進行驗證並判斷這個Token是否已通過期了。 瀏覽器
JWT流程須要注意的一點是:在使用JWT的時候也須要注意安全問題,在容許的狀況下應該使用HTTPS協議。 安全
在一些網站上爲了實現推送技術,都採用了輪詢的技術。即在特定的的時間間隔裏,由瀏覽器對服務器發出HTTP請求,而後瀏覽器即可以從服務器獲取最新的技術。以下圖所示的是Google Chrome申請開發者帳號時發出的對應的請求: 服務器
Chrome Ajax輪詢從上圖中咱們能夠看到,Chrome的前臺正在不斷地向後臺查詢API的結果。因爲瀏覽器須要不斷的向服務器發出請求,而HTTP的Header是很是長的,即便是一個很小的數據也會佔用大量的帶寬和服務器資源。爲了解決這個問題,HTML5推出了一種在單個TCP鏈接上進行全雙工通信的協議WebSocket。 性能
WebSocket可讓客戶端和服務器之間存在持久的鏈接,並且雙方均可以隨時開始發送數據。 網站