http简单总结

URL 统一资源定位符
URI统一资源标识符
URL是URI中的一种,其中URL知名了如何定位Location这个资源,URI是抽象的资源标识,可以是绝对的,也可以是相对的。
RFC request for comments  规定了网络协议的基本内容

报文的格式:                                    
    报文首部
      空格
    报文主体
 请求报文格式一般:
报文类型
URI
协议版本
可选内容
请求首部 Host\Content-Type\Content-length\connection
内容实体

响应报文格式
状态码
原因短语 200等
协议版本
可选内容
响应首部:Data\Content-Type\Content-Length
内容实体


上面是在chrome下的www.baidu.com的请求数据包
可见常用的一些属性有:
Connection:一般设置为keep-alive   保持连接状态,也是http持久化的一个特征
URL:访问地址
request method :请求方法 
status code   状态码以及状态短语
Content -Encoding:表示编码方式   gzip 
User-Agent:客户浏览器相关信息
Set-Cookie:指定想要在cookie中保存内容

http的请求方式
有很多种: get post put delete head connect link unlink option trace
最基本的是 get post put delete,可以认为这四种方式分别对应着对资源的查 改 增 删
get一般是获取资源,post用于对资源进行更新,包括增删改,put是往资源中添加,delete表示删除。
一般get和post都可以完成我们所要的简单的工作,但是有一个问题,get不能改变服务器信息。使用get方式改变服务器信息会造成严重的后果。例如:
我们点击一个按钮删除一个订单:<a herf="/order/delete/1024" οnclick="return confirm('确定?')">删除</a>,点击这个链接我们可以删除订单,并且得到用户的二次确认。但是2005年Google发布了一款加速插件,其中一种加速技术就是页面预加载。根据页面中的链接来,根据http协议,点击链接时使用get方法获取信息,因此不会对服务器造成影响,因此会放心加载当前页面的链接。比如,你在读我这篇文章时,浏览器可能把我下一篇文章预先在后台下载,这样在你点击的时候,节省了时间。所以,加载插件会为了提高速度,可能加载上面的删除链接,也就是1024订单已经被删除,这就出现了很多问题。
所以一般涉及到对服务器有改变的,一般使用post方法。
在html中,我们对get和post方法不同有一下理解:
1.get在url中,而post将数据放在body中。
2.因为get将数据跟随url进行传输,url长度会有长度的限制,所以get方法会有限度;而post数据可以很大。
3.post比get安全。get数据在地址栏中可见,参数会被保存在浏览器历史或web服务器日志中。
4.对数据类型的限制。get只允许ASCII字符,post没有限制,也可以是二进制。
5.get后退刷新无害,而post数据会被重新提交(浏览器应告知用户数据会被重新提交)
6.get可以保存为书签,post不可以。

http持久化
在正常发送http时,都会简历TCP链接,再发送报文。
通过三次握手建立链接,发送请求报文,服务器返回响应报文,通过四次挥手,断开链接。
但是每次的请求都需要经历这个过程,那么将会花费很多时间在建立链接和断开链接上,所以使用 connect属性,设置为 keep-alive,建立一条持久化链接。这样就不需要每次都建立链接。

http管道化
http可以一次发送多个http请求,然后等待响应。不需要排队等候,这样加快了http的响应时间。

http无状态
http是一种无状态的协议,所以在客户端和服务器端都不会记录http的相关信息。这样设计一方面减少服务器的负载,另一方面,减少了http请求的开销。
但是针对某些应用场景,需要记录用户的相关信息,这时,我们就采用cookie和session。
session和cookie的比较
session和cookie都是保存数据的,cookie保存在客户端,session保存在服务器端。
cookie有多个属性:名称 name  |  值 value | 失效时间(不设置默认为会话cookie随浏览器关闭而失效)|secure(该cookie是否使用安全协议传输,https,ssl等)|path(设置路径后只能在此目录下使用)|comment(该cookie的用处说明)|domain(可使用该cookie的域名)
客户端请求数据时,携带session ID,如果没有,则生成session Id,默认保存在cookie中。所以,在禁用cookie时,session会失效。如果设置了session的持久化特性,则将session保存在硬盘中。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值