您的位置:首页 > 理论基础 > 计算机网络

http协议解析(http请求方法,http状态码)

2016-08-11 10:12 260 查看
http即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间相互通信的规则,它是万维网交换信息的基础,它允许将html(超文本标记语言)文档从web服务器传送到web浏览器

 

发起http请求

当在浏览器地址中输入一个url,并按回车键后就发起了这个http请求,很快就会看到这个请求的返回结果



url(统一资源定位符)也被称为网页地址,是互联网标准的地址。url的标准格式如下

http://www.xxx.com/post/httpxy.html

协议://服务器ip【:端口】/路径/【?查询】

其实也可以借助很多工具来发起http请求,列如,在linux系统中的curl命令。或者严格的说,浏览器也属于http工具的一种,在windows中也可以使用curl.exe,但需要另外下载



http是一种无状态的协议。无状态是指web浏览器与web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器发出请求,然后web服务器返回响应,连接就关闭了,在服务器端不保留连接的有关信息。也就是说,http请求只能由客户端发起,而服务器不能主动向客户端发送数据

 

 

http请求与响应

http请求:



http响应:与http请求对应的是http响应,http响应也由三部分组成

响应行:其中有http协议版本,状态码(200)以及消息ok

第二行末尾的空白行为响应头,由服务器向客户端发送

响应体是服务器向客户端发送html数据



http的请求方法

(1)get方法用于获取请求页面的指定信息(以实体的格式)。如果请求资源为动态脚本(非html),那么返回文本是web容器解析后的html源代码,而不是源文件。列如请求index.jsp,返回的不是index.jsp的源文件,而是经过解析后的html代码



(2)head方法除了服务器不能在响应里返回消息主体,其他都与get方法相同,此方法常用来测试超文本链接的有效性。可访问性和最近的改变。攻击者编写扫描工具时,就常用此方法,因为只测试资源是否存在,而不用返回消息主体,所以速度一定是最快的。

HEAD /index.php HTTP/1.1

HOST:www.xxser.com

(3)POST

post方法与GET方法相似,但最大的区别在于,GET方法没有请求内容,而

post是由请求内容的。post请求最多用于向服务器发送大量的数据。get虽然也能发送数据,但是有大小的(长度限制),并且get请求会将发送的数据显示在浏览器端,而post则不会,所以安全性相对来说高一点

列如:上传文件,提交留言,只要是向服务器传输大量的数据,通常都会使用post请求



(4)PUT

put方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中数据替换原先的数据,作为指定资源的最新修改版。如果请求指定资源不存在,将会创建这个资源,且数据位请求正文:请求如下

put /input.txt

HOST:www.xxx.com

Content-Length:6

123456

这段http请求将会在主机根目录下创建input.txt,内容123456.通常情况下,服务器都会关闭put方法,以为它会为服务器建立文件,属于危险的方法之一

(5)DELETE

delete方法用于请求源服务器删除请求的指定资源,那么服务器一般都会关闭此方法,因为客户端可以删除文件操作,属于危险方法之一

(6)TRACE

被激活一个远程的应用层的请求消息回路,也就是说,回显服务器收到的请求,TRACE方法允许客户端去了解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。

(7)CONNECT

http1.1协议规范保留了CONNECT方法,此方法是为了用于能动态切换到隧道的代理

(8)OPTIONS

OPTIONS方法是用于请求获得由URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。

 

但HTTP中的请求方法还不止这些,列如WebDAV是一种基于HTTP/1.1协议的通信协议,它扩展了HTTP1.1在GET,POST,HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web
Server进行读写,并支持写文件锁定(Locking)和解锁(Unlock),文件复制(Copy),文件移动(Move)另外,还可以支持文件的版本控制


 

http状态码

当客户端发出http请求,服务器端接收后,会向客户端发送响应信息,其中,http响应中的第一行,最重要的一点就是http的状态码

HTTP/1.1 200 OK

此的状态码为200,在HTTP协议中表示请求成功。HTTP协议中状态码由三位数字组成,第一位数字定义了响应的类别,且只有以下5种:

1xx:信息提示,表示请求已被成功接收,继续处理。范围100~101.

2xx:成功,服务器成功处理了请求。其范围为200~206

3xx:重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,并告诉客户端新的资源地址位置。这时,浏览器将重新对新资源发起请求,范围为300~350

4xx:客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL。其范围400~415

5xx:有时间客户端发送了一条有效请求,但web服务器自身却出错了,可能是web服务器运行出错了,或者网站挂了。5XX就是用来描述服务器内部错误的,其范围500~505.

常见的状态码描述如下:

200:客户端请求成功,是最常见的状态


302:重定向

404:请求资源不存在,是最常见的状态

400:客户端请求有语法错误,不能被服务器所理解

401:请求未经授权

403:服务器收到请求,但是拒绝提供服务

500:服务器内部错误,是最常见的状态

503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: