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协议安全。

                                                                                                                     

  • 相关阅读:
    Embarcadero RAD Studio XE 15.0.3953.35171 原版下载及破解(这个以验证成功)
    画一个象windows 开始菜单的竖向标题
    bcb/delphi 透明Panel 控件源代码
    创建标题栏在左边的窗口界面
    【转载】(转自 www.sinoprise.com) 骇人听闻的CSP
    如何在托盘图标实现象window开始菜单中菜单左侧的图片效果
    BMP2AVI将BMP图象内容写入到AVI文件中去
    利用Delphi消息处理建立类似Windows开始菜单
    delphi中关键字inherited的理解
    有人会BCC32命令行下编译工程和组件的吗
  • 原文地址:https://www.cnblogs.com/0nth3way/p/7084066.html
Copyright © 2011-2022 走看看