前两天,我的一位同事问我有没有一种办法实现imgcache.qq.com和face.qq.com的cookie互操作,我说有,方案很简单,只要把cookie的domain设置成.qq.com的域名后缀就可以了,这样一来,在face.qq.com域名中设置的cookie的值,在imgcache.qq.com域中也可以检索到,同样,在imgcache.qq.com设置中的cookie也可以在face.qq.com中检索到,所以可以非常方便的实现cookie的跨域名互操作的目的。
那么,这种方案有没问题呢?或者说有哪些方面是我们觉得有点“不爽”的?答案是肯定的,首先一个重要的问题是跨域名的cookie污染,通过设置cookie的域名为.qq.com,该方案会使得所有发送到*.qq.com的http Request的请求头(cookie的信息是通过Http 请求头进行携带的)均带上cookie信息,一方面这些cookie的信息只是face.qq.com中才需要使用的,而对其他后缀也是qq.com的业务是不需要使用到这些cookie信息的,因此,这里发送多余的请求头信息对网络带宽来说是一种浪费,如果cookie的信息量比较少还可以,如果携带的信息量很大显然该方案很容易受到挑战的。那么,该方案有什么好处呢?简单,是的,该方案的实现成本很低。
好,回到我们刚才的需求场景:实现用户最近设置的头像列表(共保存6个),由于face.qq.com一般是在qq客户端的mini portal打开的,用户一般不会在地址栏看到face.qq.com的域名,为了提高性能,只把首页放到face.qq.com的域名下,而对其他的静态页面放到自建的CD