HTTP学习内容


目录

一、HTTP历史

二、HTTP协议内容

三、HTTP方法

1.GET:获取资源

2.POST:传输实体主体

3.PUT:传输文件

4.HEAD:获得报文首部

5.DELETE:删除文件

6.OPTIONS:询问支持的方法

7.TRACE:追踪路径

8.CONNECT:要求使用隧道协议连接代理

四、HTTP状态码



一、HTTP历史

在互联网刚开始出现的时候,人们为了能够让远隔两地的研究者共享知识,设想了一套理论,即借助多文档之间相互关联形成的超文本(HyperText),l连成可以相互参阅的WWW(World Wide Web)。到目前为止,已经有了三种WWW构建技术,分别是作为页面的文本标记语言HTML(HyperText Markup Language  超文本标记语言),作为文档传递协议的HTTP;指定文档所在地点的URL(Unifom Resource Locator 统一资源定位符)。

HTTP第一个版本就是HTTP/0.9,这个版本很简单,只包含了一个GET方法,在TCP完成连接之后,客户端向服务器请求网页,服务器也只能返回HTML格式的字符串,在服务器发送完毕之后就关闭TCP连接。

在1996年,HTTP被正式作为标准,这时的版本是HTTP/1.0,首先,这个版本添加了很多命令,例如POST、HEAD等,丰富了浏览器与服务器互动的手段。其次,1.0还规定任何格式的内容都可以发送,这样就可以传输图片,视频等内容。第三点就是修改了HTTP请求和回应的格式也变了,除了数据的部分,每次通信都要包括头信息,用来描述一些元数据。

但是1.0也有很多缺陷,例如依旧是短连接,在TCP和服务器连接,获取了资源之后就需要断开,如果包含很多URL地址,例如我们要求了一个有很多图片的网页,因为网页上的图片大多是以URL的形式存在,那么就需要进行多次连接,每次读取一个图片就会很耗时间。为了解决这个问题,TCP在连接的时候会添加一个非标准字符Connection:keep-alive,z这个字符要求服务器端不要关闭连接,服务器也会回复同样的字符。

到1997年,定义了HTTP/1.1版本,这个版本可以支持持久连接,但是如果服务器或者客户端某一方长时间没有活动就可以主动关闭,但是正确的做法是客户端在最后一个请求发送Connection:close,来明确要求服务器端关闭连接。二、在一个TCP连接中可以传送多个HTTP请求和响应,减少了建立和关闭连接的次数,例如一个多图片的网页就可以进行一次TCP连接,然后进行各自的请求和应答。三、加入了管道机制(pipelining),也就是说在一个TCP连接中客户端可以同时发出多个请求,这样就可以进一步提高效率,HTTP1.1允许不用等待上一次请求返回,就可以直接发出下一次请求,但是服务器端需要按照接收顺序来进行响应。四、添加了很多新的请求的头部信息,最重要的是host字段,这部分后面再讲。

未来发展的将会是HTTP2,在这个里面所有的数据是以二进制传输的,头信息和数据体都是二进制,统称为帧,在应用层和传输层之间增加一个二进制分帧层,在这里将会将所有传输的信息分割成更小的消息和帧,并对他们采用二进制编码。也正是因此,HTTP2可以同时发送多个请求和回应,而且不需要按照顺序,就可以大大提高效率。另一个优点就是头信息压缩,很多之前版本每次都需要重复发送的内容,例如cookie等将会压缩,而且客户端和服务器会维护一个头信息表,所有字段都会存入这个表,生成一个索引号,以后就可以只发送这个索引号。







二、HTTP协议内容

HTTP使用请求和响应来连接客户端和服务器端,客户端发送请求报文,服务器端接收到请求报文后发送响应报文,然后完成连接。

请求报文主要包括请求方法,请求URL,协议版本、请求首部字段和内容实体组成。

如图 ,请求方法为GET,获取根目录的页面,协议版本为1.1,从Host到Cache-Control是首部字段,下面的就是内容实体。

响应报文包括协议版本,状态码,原因,响应首部字段和内容实体。

三、HTTP方法

1.GET:获取资源

GET方法用来请求访问已经被URI识别的资源,指定的资源经过服务器端解析之后返回响应内容,也就是说如果是文本,那就直接返回文本,如果是一些其他的程序类就会返回执行后的输出结果。

2.POST:传输实体主体

POST用来传输实体的主体,POST和GET的功能相似,但是POST的主要目的不是获取响应的主体内容。

3.PUT:传输文件

PUT用来传输文件,就像FTP一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。但是鉴于HTTP/1.1的PUT方法本身不带验证的机制,任何人都可以上传文件,存在安全性问题,所以一般不用这种方法。可以配合Web应用程序的验证机制。

4.HEAD:获得报文首部

HEAD和GET一样,只是不返回报文的主体,只返回报文首部,一般用来确认URI的有效性和资源更新的日期时间等。

5.DELETE:删除文件

DELETE和PUT相反,是用来删除URI指定的资源,但是HTTP/1.1的DELETE和PUT一样没有验证机制,所以一般也不用这种方法。

6.OPTIONS:询问支持的方法

OPTIONS用来查询针对请求URI指定的资源支持的方法

7.TRACE:追踪路径

TRACE是让Web服务器将之前的请求通信返回给客户端的方法,客户端可以通过TRACE方法查询发送出去的请求是怎么被加工修改的。但是容易引发跨站追踪攻击,所以很少使用。

8.CONNECT:要求使用隧道协议连接代理

CONNECT要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TSL协议把通信内容加密之后经过网络隧道传输。

四、HTTP状态码

状态码的作用是当客户端向服务器端发送请求时,描述返回的结果。借助验证码客户端可以知道请求在服务器端是正常处理还是出现异常。

状态码类别
类别原因
1XXInformational/信息性状态码接收的请求正在处理
2XXSuccess/成功状态码请求正常处理完毕
3XXRedirection/重定向状态码需要进行附加操作以完成请求
4XXClient Error/客户端错误状态码服务器无法处理请求
5XXServer Erroe/服务器错误状态码服务器处理请求出错

200 OK:表示从客户端发来的请求在服务器端被正常处理了

204 No Content:该状态码代表服务器接收的请求已经成功处理,但是在返回的响应报文中不含实体的主体部分,而且也不允许返回任何实体的主体。一般在只需要从客户端往服务器发消息,但对客户端不需要发送新信息内容的情况下使用。

206 Partial Content:该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求,响应报文中包含由content-range指定范围的实体内容

301 Moved Permanently:永久性重定向,该状态码表示请求的资源已经被分配了新的URI,以后要使用资源现在所指的URI。如果已经把资源对应的URI保存为书签,这时就应该按location首部字段提示的URI重新保存。

302 Found:临时性重定向,表示请求的资源已经分配了新的URI,希望用户本次可以使用新的URI访问。和301类似,但是302代表的资源不是被永久移动,只是临时性质的。

303 See Other:代表该资源有另一个URI,明确应该使用GET方法获取请求的资源。

304 Not Modified:代表客户端发送附带条件的请求时,服务器端允许请求访问资源,但是因为发生请求未满足条件的情况后直接返回304。

307 Temporary Redirect:临时重定向,和302有着相同的含义。但是一些浏览器会在返回301、302和303的时候强制将方法改为GET,然后删除报文主体继续发送,而307可以保证方法和报文内容的完整性。

400 Bed Request:表示请求报文中存在语法错误,当错误发生时需要修改请求的内容后再次发送请求。

401 Unauthorized:表示发送的请求需要有通过HTTP认证的认证信息,如果之前认证过则表示用户认证失败。返回401的响应必须包含一个使用户被请求资源的WWW-Authenticate首部用以质询用户信息,当浏览器初次接收401响应的时候会弹出认证用的窗口。

403 Forbidden:代表对请求资源的访问被服务器拒绝了。服务器没必要给出具体理由,如果要说明会在实体的主体部分对原因进行描述。

404 Not Found:表明服务器上无法找到请求的资源,在服务器端拒绝请求而且不想说明原因的时候也可以用。

500 Internal Server Error:表明服务器端在执行请求时发生了错误。

503 Service Unavailable:表明服务器暂时处于超负载或者正在进行停机维护,无法处理请求,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值