• HTTP请求流程基础知识


    HTTP协议解析

    HTTP即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML文档从WEB服务器传输到WEB浏览器。

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

    URL的标准格式如下:

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

    浏览器可以发起HTTP请求,也可以借助其他工具发起HTTP请求,例如,linux系统的curl命令

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

    1.HTTP请求

    HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。

    POST/login.php HTTP/1.1      //请求行

    HOST:www.test.com        //请求头

    User-Agent:Mozilla/5.0(windows NT6.1;rv:15.0)Gecko/20100101 firefox/15.0

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

    Username=admin&password=admin  //请求正文

    2.HTTP响应

    与HTTP请求对应的是HTTP响应,HTTP响应也由三部分内容组成,分别是响应行、响应头(消息报头)和响应正文(消息主题)。

    HTTP/1.1 200 OK            //响应行

    Date:Thu,28Feb 2018 01:23:37 GMT //响应头

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

    <html>                 //响应正文或者叫消息主题

    请求方法(所有方法全为大写)有多种,各个方法的解释如下:

    GET :请求Request-URL所标识的资源

    POST:在Request-URL所标识的资源后附加新的数据

    HEAD:请求获取由Request-URL所标识的资源的响应消息报头

    PUT:请求服务器存储一个资源,并用Request-URL作为其标识

    DELETE:请求服务器删除Request-URL所标识的资源

    TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断

    CONNECT:保留将来使用

    OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求

    HTTP状态码:

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

    1xx:指示信息--表示请求已接收,继续处理

    2xx:成功--表示请求已被成功接收、理解、接受

    3xx:重定向--要完成请求必须进行更进一步的操作

    4xx:客户端错误--请求有语法错误或请求无法实现

    5xx:服务器端错误--服务器未能实现合法的请求

    常见状态码、状态描述、说明:

    200 OK  //客户端请求成功

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

    401 Unauthorized  //请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用

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

    404 Not Found  //请求资源不存在,eg:输入了错误的URL

    500 Internal Server Error  //服务器发生不可预期的错误

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

    HTTP消息

    HTTP消息又称HTTP头(HTTP header),由四部分组成,分别是请求头、响应头、普通头和实体头。

    1>请求头

    请求头只出现在HTTP请求中,请求报头允许客户端向服务器端传递请求的附加信息和客户端自身 的信息。常用的HTTP请求头如下:

    HOST:主要用于指定被请求资源的Internet主机和端口号,例如:host:www.test.com:8080

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

    Referer:代表当前访问URL的上一个URL,简单的说,用户是从什么地方来到本页面

    Cookie:它是一段文本,常用来表示请求者身份等

    Range:多线程下载一定会用到此请求头

    X-forward-for:它代表请求端的IP,可以有多个,中间以逗号隔开

    Accept:用于指定客户端接收那些MIME类型的信息,如Accept:text/html,表明客户端希望接收html文本

    Accept-Charset:用于指定客户端接收的字符集(告诉服务器能够发送哪些字符集)

    2>响应头:是服务器根据请求向客户端发送的HTTP头

    1.Server:服务器所使用的WEB服务器名称。避免攻击者探测可以修改此头的信息

    2.Set-Cookie:向客服端设置Cookie,通过查看此头,可以清楚地看到服务器向客户端发起的Cookie信息

    3.Last-Modified:服务器通过这个头告诉浏览器,资源的最后修改时间

    4.Location:服务器通过这个头告诉浏览器去访问哪个页面,浏览器接收到这个请求之后,通常会立刻访问Location头所指的页面,这个头通常配合302状态码使用

    5.Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器

    3>普通头

    在普通报头中,在少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息

    4>实体头

    请求和响应消息都可以传送一个实体。实体头定义了关于实体正文和请求所标识的资源的元信息。元信息也就是实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间等。常见的实体头如下:

    Content-Type:实体报头域用于指明发送者的实体正文的媒体类型

    Content-length:实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示

    Last-Modified:实体报头域用于指示资源的最后修改日期和时间

    HTTP协议与HTTPS协议的区别:

    HTTPS协议它是以安全为目标的HTTP通道,其实就是HTTP的升级版本,只是它比单纯的HTTP协议更加安全。

    HTTPS的安全基础是SSL,既在HTTP下加入SSL层。也就是HTTPS通过安全传输机制进行传送数据,这种机制可保护网络传送的所有数据的隐秘性和完整性,可以降低非入侵性拦截攻击的可能性。

    HTTPS和HTTP的区别主要如下

    1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用

    2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议

    3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者80,后者443

    4、http的连接很简单,是无状态的:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

    HTTPS的优点

      尽管HTTPS并非并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

      1.使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器

      2.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性

      3.HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了攻击人的成本

      4.谷歌在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”

    HTTPS的缺点

      虽说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

      1.HTTPS协议握手阶段比较费时,会时页面的加载时间延长近50%,增加10%到20%的耗电

      2.HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响

      3.SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不用

      4.SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗

      5.HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别在某些国家可以控制CA根证书的情况下,中间人攻击一样可行

  • 相关阅读:
    CSS3自定义滚动条样式 -webkit-scrollbar
    仿flash的文字动画效果
    使用PowerDesigner导出MySQL数据库建模
    将博客搬至CSDN
    centos6.3安装MySQL 5.6(转)
    # mysql -u root -p -bash: mysql: command not found
    win8设置保护眼睛的颜色
    网关末尾要么是1要么是254
    虚机centos和本机Windows之间文件的拷贝无法用xftp时用FileZilla也行
    Java基础知识总结之基础数据类型
  • 原文地址:https://www.cnblogs.com/happystudyhuan/p/11261513.html
Copyright © 2020-2023  润新知