HTTP协议中cookie没有在request中被传递
在联调环境中,前后端交互用的HTTP协议,发现服务器明明向客户端写了COOKIE,而且浏览器也没有禁用COOKIE,但是从浏览器再访问服务器,Cookie不会传到服务器。
而在生产环境中,前后端交互用的HTTPS协议,就不存在这个问题。
因为设置了cookie.setSecure(true);
true意味着"指示浏览器仅通过 HTTPS 连接传回 cookie。这可以确保 cookie ID 是安全的,且仅用于使用 HTTPS 的网站。如果启用此功能,则 HTTP 上的会话 Cookie 将不再起作用。
关于setSecure的问题,在http连接下:
当setSecure(true)时,浏览器端的cookie会不会传递到服务器端?
当setSecure(true)时,服务器端的cookie会不会传递到浏览器端?
答案:1)不会 ; 2)会
原理:服务器端的Cookie对象是java中的对象,请不要和浏览器端的cookie文件混淆了。服务器端的Cookie对象是方便java程序员包装一个浏览器端的cookie文件。一旦包装好,就放到response对象中,在转换成http头文件。在传递到浏览器端。这时就会在浏览器的临时文件中创建一个cookie文件。
但我们再次访问网页时,才查看浏览器端的cookie文件中的secure值,如果是true,但是http连接。这个cookie就不会传到服务器端。当然这个过程对浏览器是透明的。其他人是不会知道的。
总结如下:cookie的secure值为true时,在http中是无效的;在https中才有效。