cookie 的 secure 属性为 true 就是处理这方面的情况用的,它表示创建的 cookie 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以绝对不会被窃听到。
在 setSecure(true) 的情况下,只有https才传递到服务器端。http是不会传递的。
当 setSecure(true) 时,浏览器端的cookie不会传递到服务器端。
当 setSecure(true) 时,服务器端的cookie会传递到浏览器端。
原理:服务器端的Cookie对象是java中的对象,请不要和浏览器端的cookie文件混淆了。服务器端的Cookie对象是方便java程序员包装一个浏览器端的cookie文件。一旦包装好,就放到response对象中,在转换成http头文件。在传递到浏览器端。这时就会在浏览器的临时文件中创建一个cookie文件。
但我们再次访问网页时,才查看浏览器端的cookie文件中的secure值,如果是true,但是http连接。这个cookie就不会传到服务器端。当然这个过程对浏览器是透明的。其他人是不会知道的。
总结如下:cookie的secure值为true时,在http中是无效的;在https中才有效。