• HTTP请求与响应格式解析


     HTTP是Web浏览器与Web服务器之间通信的标准协议,HTTP指明了客户端如何与服务器建立连接,如果从服务器请求数据,服务器如何响应请求,关闭连接。HTTP是使用TCP/IP协议进行传输数据的,也就是传输层利用TCP进行连接,进行可靠连接的。
    HTTP客户端向服务器端的请求
    建立连接
      一般客户端与服务器端在80端口处建立一个TCP连接;
    进行请求
      请求的一般格式: GET /index.html HTTP/1.0
      第一个字段为请求动作类型:
      GET代表请求的操作,表示要求服务器返回资源的表示; 
      HEAD表示只需要文件的首部
      PUT表示向服务器上传资源
      POST主要是向服务器发送表单数据
      第二个字段,标识服务器上所请求的资源的相对URL,必须要以"/"开头,Web浏览器在发送请求的时候会自动加上服务器的主机名。
      第三个字段,客户端理解的协议版本
      每一个HTTP请求不管是客户端还是服务器端均都要以两个回车换行结束(Java中用 )
      在发送HTTP请求的时候,可以附加额外的基本信息:key:value
      一个常见的发送HTTP格式(一般服务器最重要的工作就是处理发送格式中的第一行数据):
      GET /index.html HTTP/1.0
      Accept:text/html,text/plain
      User-Agent: Lyn
      Host:www.server.com 这个主要就是指定服务器的名
      
      在向服务器发送HTTP请求中如果有查询字符串,则对于POST和GET有不同的方式。
      POST的动作类型主要是用于有所承诺的动作,GET动作主要用于不承担责任的动作。一般对于表单则是POST,浏览普通页面则是GET
      GET发送查询字符串主要直接将查询字符串附加到URL后面,如下表示:
      GET /index.html/username=Elliotte+Harold&email HTTP/1.0
      POST发送查询字符串的基本格式如下:
      GET /index.html HTTP/1.0
      Accept:text/html,text/plain
      User-Agent: Lyn
      Host:www.server.com
     
      username=Elliotte+Harold&email HTTP/1.0
    题外(URL,主要由协议,授权机构,路径,查询字符串和片段标示符表示);
    URL使用的字符必须是来自ASCII固定的子集:
      大写字母A-Z  小写字母a-z 数字0-9 标点符号- _ . ! ~ * ` ( ).
    对于未包含在这里面的字符,都要转换为字节,以%开头后面加上两个16进制数字
      一般空格编码为+,+编码为%2  
    响应请求
      服务器向客户端发送响应,响应一般包括以响应码开头,后面是元数据首部(MIME首部),空行,所请求文档,最后必须也要有两个回车换行
      基本响应格式如下:
      HTTP/1.1 200 OK
      Date:Mon 15
      Server:Apache/7.0
      Connection:close
      Content-Type:text/html;
      Content-length:107  代表文档的多少个字节,不包含首部字节数

      <html>
      <head><title>Hello</title>
      </head>
      <body>Test</body>
      </html>
    HTTP 1.1响应码
    200-299之间的响应码表示接受、理解并接受了请求
    300-399之间的响应码表示Web浏览器需要转到不同的页面,也就是重定位
    400-499之间的响应码指示客户端在某些地方有错误
    500-599之间的响应码表示服务器发生了错误。
    常见的几个响应码如下:
    HTTP/1.0 200 OK 表示响应成功
    HTTP/1.0 301 Moved 重定向
    HTTP/1.0 Bad Request 客户端向服务器发送的请求格式不正确
    HTTP/1.0 Not Found(未找到) 最常见错误,指示服务器没有所请求的页面。
    具体响应码列表请见转载的另一篇文章HTTP响应码解析
    关闭连接
      HTTP1.0是无记忆功能的,称为无状态协议,即如果客户端重新请求,服务器不会记忆前次的连接请求的连接或结果,当服务器响应完客户端本次连接后,就会自动断掉连接。
      HTTP1.1是状态协议,它可以连接重用,它允许浏览器通过一个连接发送多个不同的请求。

    本文出自 “在云端的追梦” 博客,请务必保留此出处http://computerdragon.blog.51cto.com/6235984/1191176

  • 相关阅读:
    Java中容器的两种初始化方式比较
    java8之stream
    java8之lambda表达式入门
    java8之lambda表达式(1)-基本语法
    java中Comparable和Comparator两种比较器的区别
    将博客搬至CSDN
    vsphere6.5 创建数据中心、集群和添加主机
    VMware-VCSA-6.5安装过程
    docker--数据卷与数据卷容器
    docker私有库搭建过程(Registry)
  • 原文地址:https://www.cnblogs.com/daichangya/p/12958695.html
Copyright © 2020-2023  润新知