JavaScript之cookie和客户端持久性以及脚本化HTTP

cookie和客户端持久性
1.cookie是Web浏览器存储的少量命名数据,它与某个特定的网页或网站关联在一起。JavaScript中的cookie不使用任何加密技术,因而也没有安全性(尽管以加密的https:连接来传输它们会对安全性有所帮助)。
2.因为cookie数据可以自动地在Web浏览器和Web服务器之间传递,所以位于服务器端的脚本可以读写存储在客户端的cookie值。

3.除了名字与值外,每个cookie都有四个可选的属性,分别控制它的生存期,可见性和安全性。

4.第一个属性是expires,尽管expires属性仍然有效,但是它已经被max-age属性所取代,后者用来设置cookie的生命期。设置这两个属性中的任何一个,都会使浏览器把cookie保存到一个本地文件中,以便用户下次访问这个网页时能够再将它读出来。一旦超过了终止日期,或者超过了max-age的生命期,那个cookie就会被浏览器自动地从cookie文件中删除掉。

5.第二个属性是path,它指定了与cookie关联在一起的网页。默认情况下,cookie会和创建它的网页以及与这个网页处于同一个目录下的网页和处于该目录的子目录下的网页关联。

6.第三个属性是domain。假定由位于catalog.example.com的网页创建的cookie把自己的path属性设置成了“/”,把domain属性设置成了“.example.com”,那么所有位于catalog.example.com的网页和所有位于orders.example.com的网页以及所有位于example.com域的其他服务器上的网页都能够访问这个cookie。

7.最后一个属性是名为secure的布尔值,它指定了在网络上如何传输cookie值。默认情况下。cookie是不安全的,也就是说,它们是通过一个普通的,不安全的HTTP连接传输的。但是如果将cookie标记为安全的,那么它将只在浏览器和服务器通过HTTPS或其他的安全协议连接时才被传输。

8.现代浏览器允许总数cookie多于300个,但是,一些浏览器仍然有4KB的大小限制。

9.一旦已经从cookie属性中提取出了一个cookie的值,就必须基于那个cookie创建器所使用的格式或编码方法来解释得到的值。

10.cookie实现客户端持久性的缺点:数据的大小限制在4KB;即便cookie仅为客户端脚本而使用,它们还是要上传到Web服务器上,以满足和它们相关的任意Web页面的要求。当cookie在服务器上没有使用的时候,造成自带宽浪费。

11.一个使用https:协议载入的页面所存储的数据,无法被一个使用常规http:协议载入的页面所访问。

脚本化HTTP


1.同步地使用XMLHttpRequest的时候有一个严重的问题:如果Web服务器停止响应,send()函数会阻塞很长一段时间。JavaScript执行停止,并且Web浏览器可能看上去像挂起(当然,这和平台无关)。如果服务器在一个正常页面载入的过程中挂起,用户可能只是点击浏览器的"停止"按钮并尝试另外一个链接或URL。但是,对于XMLHttpRequest来说没有“停止”按钮。send()方法并没有提供任何方式来指定等待时间的最大长度,并且,一旦请求已经发送,客户端JavaScript的单线程的执行模式也不允许脚本中断一个同步XMLHttpRequest请求。

2.XMLHttpRequest对象的一个缺点就是它没有提供指定一个请求的过期值的方法。对于同步的请求来说,这一缺点很严重。如果服务器挂起,Web浏览器在send()方法中保持阻塞,并且所有处理都被冻结起来。异步请求不会冻结,由于send()方法不会阻塞,Web浏览器可以继续处理用户事件。然而,还是会有过期的问题。

3.Ajax应用程序的关键特征就是,它使用脚本化的HTTP来与一个Web服务器通信而没有导致页面重载。既然交换的数据常常很少,并且浏览器不一定解析和提交一个文档(这关系到样式表单和脚本),响应时间大大改善,并且结果使得Web应用程序给人的感觉更像是传统的桌面应用程序。

4.Ajax的警告:第一个问题是可视化反馈;第二个问题和URL有关;第三个问题和后退按钮有关。

5.Ajax Web应用程序架构最重要的特征就是它使用XMLHttpRequest对象脚本化HTTP的能力。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值