- Set-Cookie 的 secure 屬性就是處理這方面的情況用的,它表示創建的 cookie 只能在 HTTPS 連接中被瀏覽器傳遞到服務器端進行會話驗證,如果是 HTTP 連接則不會傳遞該信息,所以絕對不會被竊聽到
也很好理解:setSecure(true); 的情況下,只有https才傳遞到服務器端。http是不會傳遞的。
做j2ee的人都知道servlet的接口中也定義了Cookie對象,也有其方法setSecue(false);
現在我提出問題:在http連接下
- 當setSecure(true)時,瀏覽器端的cookie會不會傳遞到服務器端?
- 當setSecure(true)時,服務器端的cookie會不會傳遞到瀏覽器端?
- 答案:1)不會 ; 2)會
原理:服務器端的Cookie對象是java中的對象,請不要和瀏覽器端的cookie文件混淆了。服務器端的Cookie對象是方便java程序員包裝 一個瀏覽器端的cookie文件。一但包裝好,就放到response對象中,在轉換成http頭文件。在傳遞到瀏覽器端。這時就會在瀏覽器的臨時文件中 創建一個cookie文件。
但我們再次訪問網頁時,才查看瀏覽器端的cookie文件中的secure值,如果是true,但是http連接。這個cookie就不會傳到服務器端。當然這個過程對瀏覽器是透明的。其他人是不會知道的。
總結如下:secure值爲true時,在http中是無效的;在https中才有效。