Cookie的Secure屬性
基於安全的考慮,需要給cookie加上Secure和HttpOnly屬性,HttpOnly比較好理解,設定HttpOnly=true的cookie不能被js獲取到,無法用document.cookie打出cookie的內容。
Secure屬性是說如果一個cookie被設定了Secure=true,那麼這個cookie只能用https協議傳送給伺服器,用http協議是不傳送的。換句話說,cookie是在https的情況下建立的,而且他的Secure=true,那麼之後你一直用https訪問其他的頁面(比如登入之後點選其他子頁面),cookie會被髮送到伺服器,你無需重新登入就可以跳轉到其他頁面。但是如果這是你把url改成http協議訪問其他頁面,你就需要重新登入了,因為這個cookie不能在http協議中傳送。
例子是:
前提條件:https://localhost:9102應用對cookie設定了Secure=true
1. 訪問 https://localhost:9102/manager
2. 輸入使用者名稱、密碼,用IE或者Chrome的developer tool會看到response的header裡,set-cookie的值裡有Secure屬性
3. 登入後,繼續訪問https://localhost:9102/manager#user,可以正常看到內容
4. 修改url,訪問http://localhost:9100/manager#domain,會跳轉到登入頁面,因為cookie在http協議下不傳送給伺服器,伺服器要求使用者重新登入
原因分析:
伺服器開啟了Https時,cookie的Secure屬性應設為true;
解決辦法:
1.伺服器配置Https SSL方式,參考:https://support.microsoft.com/kb/324069/zh-cn
2.修改web.config,新增:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
<system.web>
See: