知识储备:HTTP协议

来源:互联网 发布:mac papers和readcube 编辑:程序博客网 时间:2024/04/29 09:19

总体概述

  1. HTTP(超文本传输协议)是计算机网络中应用层的一个协议,并是基于TCP/IP协议的(计算机网络相关的知识还有待复习)。
  2. 可以把http协议简单理解成浏览器和服务器之间超文本数据传递的一种机制:浏览器向服务器发送一个http请求,服务器接受到这个请求并解析,将浏览器请求的数据封装成一个http响应返回给浏览器。
  3. HTTP是一种无连接、无状态的协议。
    “无连接”指的是服务器处理完客户的请求,并收到客户的应答后,即断开连接。目的是为了节省传输时间。
    “无状态“指的是同一个客户端的这次请求和上次请求是没有对应关系(Cookie)。

URL介绍

  1. 浏览器通过URL(统一资源定位符)来定位网络资源,一个URL就代表了浏览器的一个完整的请求对象。
  2. URL包括:连接协议 + 主机名/IP + 端口号 + 资源名(例如http://www.baidu.com/index.jsp)。
  3. 注意URL和URI的区别:URL表示一个完整的请求对象
    URI表示的是URL请求对象中资源名称。

HttpRequest请求结构
这里写图片描述
HttpRequest的请求结构分为三个部分: 请求行(Request line) + 请求头(Request header) + 请求体(body)

  1. 请求行(Request line)
    请求行包括的内容有:请求方法(get/post) + 请求的资源名 + 请求的协议/版本
    例如:GET http://www.cnblogs.com/ HTTP/1.1

  2. 请求头(Request header)
    请求头描述浏览器的一些基本信息以及浏览器向服务器端发送的请求信息,譬如说告诉服务器,浏览器可以接收的信息类型(Accept),接收的字符编码(Accept-Charset)、要访问的服务器主机名(Host)、是否引用了相应的Cookie技术(Cookie)。
    这里写图片描述

  3. 请求体(body)
    发送的内容[格式:内容名字=内容体]???

HttpResponse响应结构
这里写图片描述
HttpResponse响应结构和HttpRequest请求结构基本一样。同样也分为三部分:响应行(Response line) + 响应头(Reponse header) + 响应体(body)

  1. 响应行(Response line)
    用于描述服务器对请求的处理结果
    例如:HTTP/1.1 200 OK
  2. 响应头(Reponse header)
    相应头用于描述服务器的一些基本信息以及服务器向浏览器返回的响应信息,譬如说告诉浏览器所使用的服务器类型(server)、返回的信息类型(Content-Type)、浏览器缓存的基本信息(Cache-Control、Pragma、Expires)
    这里写图片描述
  3. 响应体(body)
    代表服务器向客户端会送的数据

知识的补充:
HTTP/1.1中定义了5类状态码,状态码由三位数字组成,第一个数字定义了相应的类别

  1. 1xx 提示信息-表示请求已被成功接收,继续处理
  2. 2xx 成功-表示请求已被成功接收,理解,接受。例如:最常见的就是成功相应状态码200,这表明请求被成功的完成,所请求的资料发送回客户端
  3. 3xx 重定向-要完成请求必须进行更进一步的处理。例如:302 Found重定向,新的URL会在Response中的Location中返回,浏览器将自动使用新的URL发出新的Request 例如在IE中输入,http://www.googl.com,HTTP服务器会返回302,IE取到Response中的Location header的新URL,又重新发送了一个Request。
  4. 4xx 客户端错误-请求有语法错误或请求无法实现,例如:404 Not Found请求资源不存在(输错了URL) 比如在IE中输入一个错误的URL, http://www.cnblogs.com/tesdf.
  5. 5xx 服务器端错误-服务器未能实现合法的请求。例如:500 Internal server Error服务发生了不可预计的错误。
    Post提交方式与Get提交方式的对比
    1. get是从服务器上获取数据,post是向服务器传送数据。(??)
    2. get会把提交的信息添加到URL后,而post不回
    3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
    4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。
    5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

0 0
原创粉丝点击