大中型互联网项目对session,cookie的使用建议及其跨域处理
2014-05-16 11:25
393 查看
在规模稍大的系统开发中,必然会有多个子项目,分布式部署服务器等,在主站(a.com),子站(a.a.com)之间要完成登录信息共享,就涉及到跨域了,我建议的是在大型互联网项目中,对登录信息及其他会频繁调用的公用信息最好不要用session,用cookie存储。
用session有2个最大的弊端,一是其保存在服务器,在大型项目中对服务器负载压力很大,得不偿失,二是在各个子项目间跨域非常不好处理,如果使用cookie存储,只要将域设为.a.com便可以轻松各子项目实现公用cookie,再其是存储在客户端,对服务端没有任何压力。
我的处理习惯,登陆信息,购物车及其他对用户需频繁调用的公用信息存cookie,验证码这些对用户仅一次调用验证的信息可以存session。
但是还需注意一点,各个浏览器对cookie数量,大小是有限制的
以下数据也是从网上找到的
一、浏览器允许每个域名所包含的cookie数:
Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。
Firefox每个域名cookie限制为50个。
Opera每个域名cookie限制为30个。
Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。
注:“每个域名cookie限制为20个”将不再正确!
二、当很多的cookie被设置,浏览器如何去响应。
除Safari(可以设置全部cookie,不管数量多少),有两个方法:
最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。Internet Explorer和Opera使用此方法。
Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。
三、不同浏览器间cookie总大小也不同:
Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。
用session有2个最大的弊端,一是其保存在服务器,在大型项目中对服务器负载压力很大,得不偿失,二是在各个子项目间跨域非常不好处理,如果使用cookie存储,只要将域设为.a.com便可以轻松各子项目实现公用cookie,再其是存储在客户端,对服务端没有任何压力。
我的处理习惯,登陆信息,购物车及其他对用户需频繁调用的公用信息存cookie,验证码这些对用户仅一次调用验证的信息可以存session。
但是还需注意一点,各个浏览器对cookie数量,大小是有限制的
以下数据也是从网上找到的
一、浏览器允许每个域名所包含的cookie数:
Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。
Firefox每个域名cookie限制为50个。
Opera每个域名cookie限制为30个。
Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。
注:“每个域名cookie限制为20个”将不再正确!
二、当很多的cookie被设置,浏览器如何去响应。
除Safari(可以设置全部cookie,不管数量多少),有两个方法:
最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。Internet Explorer和Opera使用此方法。
Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。
三、不同浏览器间cookie总大小也不同:
Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。
相关文章推荐
- 如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
- vue项目中,使用axios跨域处理
- session和cookie的使用及其区别(cookie是在用户浏览器上,而session是在服务器上的,一般cookie不是很安全)
- 在分布式项目中使用memcached+cookie替代session
- 在vue项目中,使用axios跨域处理
- wap项目:在wap中使用session,或者cookie
- Java中的异常处理用法及其架构和使用建议
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- ssm项目session使用及其作用域问题
- java中使用Cookie替代Session解决跨域Session失效问题
- Session & Cookie 的使用建议(zz)
- PHP - Manual手册 - CXLIX. Session 会话处理函数 - session.use_only_cookies指定是否在客户端仅仅使用 cookie 来存放会话 ID
- session和cookie的区别?在项目中都有哪些地方使用了?
- 基于互联网的项目管理——Microsoft Project Central 及其应用
- php中Cookie介绍及其使用
- php中Cookie及其使用
- JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理
- 抛开Cookie使用SESSION-PHP中SESSION不能跨页传递问题的解决办法(转载)
- 如何在AjaxPro.net的AjaxMethod中使用session和cookie
- WebService的异常处理与WebService的Session的使用示例