浅析HTTP协议

HTTP(超文本传输协议)协议是一种无状态的协议。无状态是指web浏览器与web服务器之间不需要建立持久的连接。

HTTP遵循请求(request)和应答(response)模型,web浏览器向web服务器发送请求时,web服务器处理请求并返回应答。

 

HTTP请求

HTTP请求有三部分组成:

1.请求行(请求方法)

2.请求头(消息报头)

3.请求正文

 

例如:

POST /sample.php HTTP/1.1                //请求行:请求方法+URI+协议/版本

Host: www.xxxxx.com                    //请求头

User-Agent: Mozila/4.0(compatible; MSIE5.01;Windows NT5.0)

                                    //空白行,代表请求头结束

username=admin&password=1234        //请求正文

 

HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。最常用的方法是GET和POST。

 

GET方法:

GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只是经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。

例如HTTP://127.0.0.1/login.jsp?Name=admin&Age=30&Submit=%cc%E+%BD%BB

从上面的URL请求中,很容易就可以看出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大。

 

POST方法:

POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

 

HTTP响应

HTTP响应也由3个部分构成:

1.响应行

2.响应头

3.响应正文

 

例如:

HTTP/1.1 200 OK                        //响应行:协议/版本+状态码

Server:Apache Tomcat/5.0.12              //响应头

Date:Mon,6Oct2003 13:23:42 GMT

Content-Length:112

                                    //空白行,代表响应头结束

<html>                              //响应正文

<head><title> HTTP响应示例 </title></head>  

……

 

HTTP状态码

它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型。且只有以下5种:

1XX:信息类(Information),表示收到Web浏览器请求,正在进一步的处理中。范围为100-101

2XX:成功类(Successful),表示用户请求被正确接收,理解和处理。范围为200-206

3XX:重定向类(Redirection),表示请求资源已被移动,并告知客户端新的资源地址位置,这时,浏览器将重新对资源发起申请。范围为300-305

4XX:客户端错误(Client Error),表示客户端提交的请求有错误.范围为400-415

5XX:服务器错(Server Error)表示服务器自身出错。范围为500-505

 

HTTP消息

HTTP消息又称为HTTP头,有四种类型:

1.请求头

2.响应头

3.普通头

4.实体头

 

请求头主要有:

Host:用于指定被请求资源的Internet主机和端口号。

User-Agent:将客户端的操作系统、浏览器和其他属性告诉服务器。

Referer:代表访问URL的上一个URL,也就是说,用户从什么地方来到本页面。

Cookie:用来表示请求者的身份。

Range:用于请求实体的部分内容。

Accept:用于指定客户端接收哪些类型的信息。

Accept-Charset:用于指定客户端接收的字符集。

X-forward-for:即XFF,代表请求端的IP。

 

响应头主要有:

Server:服务器所使用的web服务器和web容器名称。

Set-Cookie:向客户端设置cookie。

Last-Modified:资源的最后修改时间。

Location:告诉浏览器去访问哪个页面,通常配合302状态码使用。

Refresh:告诉浏览器定时刷新。

 

普通头:Date、Connection、Cache-Control

 

实体头主要有:

Content-Type:向接收方指示实体的介质类型。

Content-Encoding:指示已经被应用到实体正文的附加内容的编码。

Content-Length:指明实体正文长度,以字节方式存储的十进制表示。

 

HTTPS

HTTPS和HTTP的区别:

1.HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。

2.HTTP是超文本传输协议,信息是明文传输,HTTPs 则是具有安全性的ssl加密传输协议。

3.HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

4.HTTP的连接很简单,是无状态的。

5.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比HTTP协议安全。

                                                                                                                 

posted @ 2017-06-27 11:03  0nth3way  阅读(303)  评论(0编辑  收藏  举报