POST、GET、Cookie、Session杂谈

POST和GET

  1. 一般来说get用于获取、检索post用于**创建、更新
  2. get会将请求的参数附加到Url中,而post不会在URL中附加参数,而是将参数放在request body中。所以getpost更不安全(post也不安全,因为HTTP本身是明文协议。每个HTTP请求和返回的每个byte都会在网络上明文传播,不管是url,header还是body)
  3. 使用get请求时,浏览器会把http header和data一并发送出去。而使用post请求时,服务器会先发送header,等待服务器响应后在发送具体data。
  4. get请求在URL中传送的参数是有长度限制的(因为url的长度是由限制的,谷歌浏览器限制为2mb),而POST没有。
  5. get请求只能进行url编码,而post支持多种编码方式
  6. 总的来说,getpost甚至可以说是一个东西,你可以在get请求中附带request body,也可以在post请求的url中加上参数。

Cookie和Session

Http是无状态的,也就是说服务器并不会知道这个发送http请求的客户端是谁。(服务器是个渣男,相应完之后就把客户端忘了,端户端下一次再来就和新人一样。)CookieSession就是为了让服务器记住客户端而诞生的。

Cookie

Cookie存数据得方式是键值对的模式key:value,且Cookie是保存在客户端的。浏览器每次发送请求就会自动带上Cookie。假设有一个需要让用户保持登录的需求。客户端在发送登录请求后,服务器响应并验证了信息。之后服务器把用户名和密码放在Cookie中返回给客户端。之后客户端每次发送请求就都会带上Cookie,这样就能保持登录状态了。但是Cookie中保存的信息是明文的,用户名和密码存在里面很不安全。

在这里插入图片描述
Cookie常用的属性:

  1. maxAge :Cookie失效时间,单位秒。Cookie在maxAge秒之后失效。
  2. path:该Cookie使用路径。如果设置为”/sessionWeb/”,则只有contextPath为”/sessionWeb”的程序可以访问该Cookie。如果设置为”/”,则本域名下contextPath都可以访问该Cookie。
  3. domain:可以访问该Cookie的域名。如果设置为”.google.com”,则所有以”google.com”结尾的域名都可以访问该Cookie。

Session

Session与Cookie不同,Session是存在服务端的。还是假设一个保持登录的场景。服务端在验证登录请求后就生成了一个SessionID,通常来说是一个随机的字符串。并把这个字符串返回给客户端(因为是随机的字符串,没有使用明文的用户名和密码所以相对Cookie安全一点。)之后客户端在下一次访问时可以在Cookie中或者在url中带上SessionId,服务端接收到SessionID进行验证就是做到保持登录的效果了。
但是当服务器是一个集群时,就出现了一个问题。就是服务器A生成了SessionId并保存,但是服务器B并没有这个SessionID。所以当客户端下次访问的是服务器B时,就无法通过SessionID保持登录了

  • 多服务器时的Session
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值