2017-06-01 102 views
1

我有一個使用https協議與服務器通信的Angular Js應用程序。我使用cookie來存儲登錄用戶的名稱和jwt令牌。以下是我用來設置Cookie的代碼。HTTPS協議上的angularJs應用程序使用HttpOnly標誌Cookie

$cookies.putObject('token', token, { 
     expires: exp, 
     secure: true 
     }); 

爲了讓我的應用程序從安全團隊獲得許可,我需要爲cookie設置HttpOnly標誌。

當我打開我的網站的cookies我看到兩個項目

  1. connect.sid - 不知道該如何被創建的。我沒有做任何明確的創建這個cookie的 。
  2. 令牌 - 這是我創建的cookie來存儲用戶和他的jwt令牌。

我搜索了一下,做了必要的修改,在這些cookie上設置了HttpOnly標誌。它的工作原理,我可以看到兩個cookie都有HttpOnly標誌檢查。但是在這個改變之後,我的身份驗證停止了工作(即不能訪問cookie內的jwt集)。換句話說,我與後端的溝通被打破了。我使用下面的語句來讀取cookie。

$cookies.getObject('token') 

我不得不還原一些更改以恢復到以前的狀態。現在,connect.sid cookie被設置爲HttpOnly標誌,而令牌cookie不是。我想知道這裏的問題是什麼。 Im是Angular Js的新成員,從​​未從事Cookie管理工作。任何幫助將不勝感激。

回答

3

A HttpOnly Cookie意味着它無法從JavaScript等腳本語言訪問。所以在JavaScript中絕對沒有可用的API來獲取/設置cookie的HttpOnly屬性,否則將會破壞HttpOnly的含義。

只需從服務器設置您的'令牌'cookie即可。

+0

我確實爲我的令牌cookie從服務器設置了HttpOnly標誌。但在此之後,我的代碼無法訪問它的內容。我想知道這是否是預期的?或者我可能沒有閱讀餅乾「正確的方式」 –

+1

是的,這是預期的行爲。 HttpOnly Cookie意味着不能被javascript讀取。 – Himanshu

+0

謝謝@Himanshu。這有幫助 –

相關問題