cookie(储存在用户本地终端上的数据),它是HTTP协议中的重要部分之一。通常我们用脚本语言如Javascript或者服务端语言如java等读写cookie。其格式为:key=value,如果是多个键值对,则用分号(;)进行分隔,但是该文件也不能无限制的存储,是有数量和大小限制的!【网上找的资料,未进行验证,仅仅示意有限制,具体的可以参考HTTP协议标准和各浏览器的说明】
一、浏览器允许每个域名所包含的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大小超过限制都被忽略,且永远不会被设置。
------摘自 http://www.cnblogs.com/henryhappier/archive/2011/03/03/1969564.html
通常获取数据是使用表单来进行的,也就是我们通常注册、登录、发表博客、微博等需要填写数据并提交的东西。获取数据的HTML标签其实很有限,只有以下几种:
input[text]、input[password]、input[checkbox]、input[radio]、input[file]、input[hidden]、select、textarea
没呢?没了!就只有上面这些,其他的标签也可以在form中使用,但是标签中的数据是不会传递到后台中去的(此外,一旦将上述标签设置为disabled="disabled",标签的值也不会传递回去,后台获取的是null)。可想而知,表单可以使用的标签明显不够用,程序设计者就利用这些变换出各式各样的表单,如combox等,实在是佩服!!
通常有这些标签也还是没法把数据收集起来,因为这些标签还需要放在f<form>标签之中,form标签中经常使用的属性是id、name、action、method、enctype等,其中method和HTTP协议中的请求头的方法匹配,action是用来设置处理表单的动作执行者,enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。当需要进行文件上传时,必须设置为multipart/form-data。
放置在form标签之中提交的数据,通常都被格式化为name=value的形式传递给后台进行处理,因此表单的标签是必须有name属性的,而且name属性的值就是传递到后台的name。注:当然,如果使用get的方式,也可以使用js去操作地址栏的数据去获取。
另外一个经常被单独抽取出来作为一个问题来进行分析和讨论的就是——文件上传。其实纯HTML是提供了此功能,但是无奈用户体验效果太差,因此经常是被替换掉了。关于文件上传后台处理问题涉及以下几个问题:1、扩展名校验和限制;2、大小校验和限制;3、存储路径和方式等。扩展名校验和限制、大小校验和限制可以通过前台js或者后台代码进行判断,通常还应该检测web程序运行容器的限制!对于存储路径和方式的问题,可以使用以下几个方案:1、文件存储到web所在系统的文件系统中;2、存储到数据库中;3、存储在现在流行的hadoop中;4、采用ftp/nfs的方式进行分布式存储。
OK,完毕!