zoukankan      html  css  js  c++  java
  • 浅析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协议安全。

                                                                                                                     

  • 相关阅读:
    设计模式学习总结系列应用实例
    【研究课题】高校特殊学生的发现及培养机制研究
    Linux下Oracle11G RAC报错:在安装oracle软件时报file not found一例
    python pro practice
    openstack python sdk list tenants get token get servers
    openstack api
    python
    git for windows
    openstack api users list get token get servers
    linux 流量监控
  • 原文地址:https://www.cnblogs.com/0nth3way/p/7084066.html
Copyright © 2011-2022 走看看