zoukankan      html  css  js  c++  java
  • HTTP协议

    HTTP协议

      HTTP英文全称是Hypertext Transfer Protpcol,也就是超文本传输协议。就是定义客户端于服务器端进行通讯的格式。

      HTTP使用请求-响应的方式进行传输,一个请求只能对应一个响应,并且请求只能由客户端发起的。

      如图所示:

      HTTP请求     

       客户端连接服务器之后,想服务器请求某个web资源,称之为客户端向服务器发送一个http请求,一个完整的http请求内容包括:一个请求行、若干请求头、请求体。

          

      请求行:

        例如:POST /Demo01/user.html HTTP/1.1

        格式:请求方式 资源路径 协议/版本

        请求行必须在http请求格式的第一行。

         常见的请求:get请求,post请求

          get请求:

            将请求参数追加在url后面,不安全,url长度限制get请求方式数据的大小,没有请求体,一般的HTTP请求大多都是GET。

          post请求

            请求参数在请求体处,较安全。请求数据大小没有显示,只有表单设置为method=“post”才是post请求,其他都是get请求

          常见get请求:地址栏直接访问、<a href="">、<img src="">等

      请求头:

      例如:Host: 127.0.0.1:8080

      请求头从第二行开始,到第一个空格结束。请求头和请求体之间存在一个空格。

      常见请求头:

        Referer:表示这个请求是从哪个url跳过来的,通过百度来搜索淘宝网,那么在进入淘宝网的请求报文中,Referer的值就是:www.baidu.com。如果是直接访问就不会有这个头。常用于:防盗链。

        Accept:告诉服务端,该请求所能支持的响应数据类型,专业术语称为MIME 类型(文件类型的一种描述方式)

        MIME格式:大类型/小类型[;参数]

        例如:

             text/html ,html文件

        User-Agent:浏览器通知服务器,客户端浏览器与操作系统相关信息

        if-Modified-Sincce:浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存

        Cokkie:客户端的Cookie就是通过这个报文头属性传给服务端的!

        Host:请求的服务器主机名

        Content-Type:请求的与实体对应的MIME信息。如果是post请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码

        Connection:表示客户端与服务连接类型;Keep-Alive表示持久连接,close已关闭

      请求体

        当请求方式是post的时,请求体会有请求的参数,格式如下:

        username=zhangsan&password=123

      HTTP响应

            HTTP的响应报文也由三部分组成(响应行+响应头+响应体)

            

        响应行:

          ①报文协议及版本;

          例如:

            HTTP/1.1 200 OK

          ②状态码及状态描述;

          常用的状态码如下:

            200 :请求成功。

            302 :请求重定向。

            304 :请求资源没有改变,访问本地缓存。

            404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。

            500 :服务器内部错误。通常程序抛异常。

        响应头:

          响应报文头,也是由多个属性组成;

          响应头也是用键值对k:v

          服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同

        响应体:

          服务器发送给浏览器的正文,即我们真正要的“干货” ;

          响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染     显示页面内容

  • 相关阅读:
    Linux日志管理系统rsyslog
    Linux访问权限控制及时间同步实践
    Linux系统自动化安装之cobbler实现
    【转】java取整和java四舍五入方法
    The web application [ ] registered the JDBC driver [net.sourceforge.jtds.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver
    Python学习笔记之函数式编程
    Java去重字符串的两种方法以及java中冒号的使用
    Python学习之字符串格式化
    Python学习之文件操作
    Python学习笔记之爬虫
  • 原文地址:https://www.cnblogs.com/zhai113/p/11813300.html
Copyright © 2011-2022 走看看