这个问题只和HTTP标准有关:就是标准如何约定标识客户。
我猜,题主真正需要理解的是,网站如何标识客户。如果是这样,那么,京东网站就不是关键参数,问题可以更加一般化为网站如何区分两个客户,为他们建立不同的购物车内容。
用户A,在北京使用chrome访问京东,放到购物车内一个剃须刀。用户B,在拐磨子登陆,放到购物车内一把锄头。因为用户还没有登录,故而网站并不知道他们是谁,要点是,用户A访问时,购物车内是他选购的,用户B也是。不要混在一起。在此场景下,只要不弄混,虽然我不知道用户姓甚名谁,都无所谓,互联网上,有id就行。
这个问题的一句话就是cookie,第一个浏览器netscape 1.0就考虑到这个问题,并且加入到http规范里面。
过程是这样的:
服务器设置一个cookie。浏览器会把这个cookie记录到当前访问网站的域名下,如cart.jd.com
`
<?php
$value = "my cookie value";
setcookie("TestCookie",$value);
?>
`
下一个请求过来,浏览器会就会发现这个cart.jd.com 访问过,并且在这个域名的名下,记录了有cookie,就会按照http规范,发送这个cookie过来。而服务器可以检索这个 cookie :
`<?php
// 输出个别的 cookie
echo $_COOKIE["TestCookie"];
echo "
";
?>`
这里面,TestCookie 是一个key,"my cookie value"是值,这个值,就是一个字符串,可以很长,长到甚至把整个购物车的内容做个编码,把他放进去。
Session 也是常见的web编程概念,不过不是http标准的一部分。目的吗,是为了优化,有了它,购物车名单再长,对Session而言,客户端写的cookie也只是一个id,通过这个id,可以在服务器端的Session内获得全须全尾的购物车内容。