• http协议总结


    声明:以写内容很多取自某培训机构课件,感觉不错,加以整理与大家分享也方便日后自己复习

    引言: 

     有没有想过,为什么你在浏览器中填入一串地址,然后ENTER就能打开一个网页,为什么不是别的网页。服务器怎么知道用户请求的是哪个网页。答案就是HTTP协议。

      HTTP协议是一种基于TCP/IP的应用层协议,掌握HTTP协议对于web开发是非常重要的,笔者最近总结了一下与大家分享也为自己以后方便复习。客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。

    HTTP协议版本

      有:1.0,1.1两个版本。在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源,之后就会断开链接。HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。请看下图:
    图1

    HTTP请求

      客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。如下图所示:

    图2

    注:上图是通过一个IE插件实现的httpWatch,可自行搜索下载。

    请求行用于描述客户端的请求方式、请求的资源名称,以及使用的HTTP协议版本号;

    消息头用于描述客户端请求哪台主机,以及客户端的一些环境信息等。如上图所示,我们是通过post方式,使用的HTTP版本号是http1.1,主机是:localhost,即本地主机。实体信息:test。

    常用请求消息头 :

    Accept: text/html,image/*     说明浏览器接受的数据类型

    Accept-Charset: ISO-8859-1 说明浏览器使用的字符编码

    Accept-Encoding: gzip,compress    说明浏览器支持的压缩格式

    Accept-Language: en-us,zh-cn       说明浏览器的语言环境

    Host: www.it315.org:80              说明浏览器要访问的主机名

    If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 文件的修改事件,用于做缓存

    Referer: http://www.it315.org/index.jsp    说明请求来自哪里,防盗链 (做实验)

    User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 说明浏览器内核

    Cookie 向服务器发送Cookie

    Connection: close/Keep-Alive    说明连接状态

    Date: Tue, 11 Jul 2000 18:23:51 GMT    客户端计算机时间

     实体内容(消息体)

    浏览器向服务器发送的数据,例如上传的文件、提交的表单等

    1)HTTP请求方式

      POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT。但常用的只有post,get。其它几种方式基本都用不到,这两种方式也有很大的区别以及不同的适用场景。

    a)get方式

      通过get方式提交的数据会在浏览器地址栏里有显示,会在请求的URL地址后以?的形式带上交给服务器的这些数据,多个数据之间以&进行分隔。在URL地址后附带的参数是有限制的,其数据容量不能超过1K。默认情况下浏览器向服务器提交的数据都是此种方式。正因为这样get方式只适合提交一些数据量小的对安全性要求不高的数据。例如上传文件,用户登录等都不能通过此种方式。

    b)post方式

      与get方式相比post方式没有对提交数据的大小限制,而且所提交的数据也不会在浏览器地址栏中显示。这些数据会放在http请求中的实体信息中,如:图2中的user=test。

    为了比较这两种方式,我写了一个web测试项目,在此工程中有一个1.html。关键代码如下:

    <body>
        <form method="post" action="/1.html">
            <input type="text" name="user" /> <input type="submit" value="submit" />
        </form>
    </body>

    body中有一个表单,通过form的method指定表单的提交方式分别为post,get。运行情况如下:

    get方式:

     

    post方式:

    请大家注意观察上面两幅图的地址栏与httpwatch中的请求头,实体信息行。

    http响应消息

    http响应消息的内容包括:  一个状态行(类比 http请求信息的”请求行”)若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。 

    状态行用于描述服务器对请求的处理结果。

    消息头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据

    实体内容代表服务器向客户端回送的数据

     

     http常用响应头

    Location: http://www.it315.org/index.jsp    通知浏览器去访问另一个资源

    Server:apache tomcat 说明服务器

    Content-Encoding: gzip  通知浏览器数据的压缩格式

    Content-Length: 80  通知浏览器发送数据的长度

    Content-Language: zh-cn  通知浏览器语言环境

    Content-Type: text/html; charset=GB2312  通知浏览器文件的格式和编码

    Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 告诉浏览器文件的修改时间

    Refresh: 1;url=http://www.it315.org 通知浏览器自动刷新

    Content-Disposition: attachment; filename=aaa.zip 通知浏览器以下载的方式打开资源

    Set-Cookie:SS=Q0=5Lb_nQ; path=/search 发cookie

    Expires: -1//3种禁止缓存的头字段

    Cache-Control: no-cache  

    Pragma: no-cache   

    Connection: close/Keep-Alive    连接状态

    Date: Tue, 11 Jul 2000 18:23:51 GMT   系统时间

     

      就写到这吧,以前都是看别人写博客,自己写了才发现写博客也挺考验人的毅力的。坚持。。。

  • 相关阅读:
    Go开发环境搭建
    es入门小结
    Python操作ES
    mongodb
    RBAC-基于角色的访问控制 django缓存、信号、xadmin使用
    drf序列化群增、群改、群删
    drf过滤、分页、全局异常处理
    VS配置IISExpress外部IP访问
    Oracle中tnsping命令解析
    oracle导入Excel数据文件(大量数据)处理方法
  • 原文地址:https://www.cnblogs.com/byghui/p/2969535.html
Copyright © 2020-2023  润新知