深入HTTP请求流程

  • 深入HTTP请求流程
    • URL(统一资源定位符)也被称为网页地址,是互联网标准的地址。URL的标准格式如下:
      • 协议://服务器IP [:端口]/路径/[?查询]
    • HTTP遵循请求(Request)/应答(Response)模型

    • HTTP请求
      • HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。面是HTTP请求的一个例子。
      • POST /login.php HTTP/1.1 //请求行
      • User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0)Gecko/20100101 Firefox/15.0 //空白行,代表请求头结束
      • Username=admin&password=admin //请求正文
      • HTTP请求行的第一行即为请求行,请求行由三部分组成,该行的第一部分说明了该请求是POST请求;该行的第二部分是一个斜杠.(/login.php),用来说明请求的是该域名根目录下的login.php;该行的最后一部分说明使用的是HTTP 1.1版本(另一个可选项是1.0)。
      • 第二行至空白行为HTTP中的请求头(也被称为消息头)。其中,HOST代表请求的主机地址,User-Agent 代表浏览器的标识。请求头由客户端自行设定。关于消息头的内容,在后面章节中将会详细介绍。
      • HTTP请求的最后一行为请求正文,请求正文是可选的,它最常出现在POST请求方法中。
    • HTTP响应
      • 与HTTP请求对应的是HTTP响应,HTTP 响应也由三部分内容组成,分别是响应行、响应头(消息报头)和响应正文(消息主题)。下面是一个经典的HTTP响应。
      • HTTP/1.1 200 OK //响应行
      • Date: Thu, 28 Feb 2013 07:36:47 GMT //响应头
      • Server: BwS/1.0
      • Content-Length : 4199
      • Content-Type : text/html ; charset=utf-8
      • Cache-Control: private
      • Expires: Thu,28 Feb 2013 07:36:47 GMT
      • Content-Encoding: gzip
      • Set-Cookie: H_Ps_PSSID=2022_1438_1944_1788; path=/; domain=.xxser.com
      • connection: Keep-Alive
      • //空白行,代表响应头结束
      • <html> //响应正文或者叫消息主题
      • -..---
      • HTTP响应的第一行为响应行,其中有HTTP版本((HTTP/1.1)、状态码(200)以及消息“OK”。
      • 第二行至末尾的空白行为响应头,由服务器向客户端发送。
      • 消息报头之后是响应正文,是服务器向客户端发送的HTML数据。
    • HTTP请求方法
      • GET
        • GET方法用于获取请求页面的指定信息(以实体的格式)。如果请求资源为动态脚本(非HTML),那么返回文本是Web容器解析后的HTML源代码,而不是源文件 。
        • Index.php?id=1&username=admin //多个参数项以“&”分隔
        • 使用GET请求,在服务器端脚本语言中可以选择性的接收参数,一般由开发者内定好的参数项目才会被接收
      • HEAD
        • HEAD方法除了服务器不能在响应里返回消息主体外,其他都与GET方法相同。
      • POST
        • GET方法没有请求内容,而POST是有请求内容的。
        • POST 请求最多用于向服务器发送大量的数据,GET虽然也能发送数据,但是有大小(长度〉的限制。
        • 并且GET请求会将发送的数据显示在浏览器端,而 POST则不会,所以安全性相对来说高一点。
      • PUT
        • PUT方法用于请求服务器把请求中的实体存储在请求资源下。
        • 通常情况下,服务器都会关闭PUT方法,因为它会为服务器建立文件,属于危险的方法之一
      • TRACK
        • TRACE方法被用于激发一个远程的应用层的请求消息回路,也就是说,回显服务器收到的请求。
      • CONNECT
        • 用于动态切换到隧道代理
      • OPTIONS
        • OPTIONS方法是用于请求获得由URI标识的资源在请求/响应的通信过程中可以使用的功能选项。
    • HTTP状态码
      • HTTP协议中的状态码由三位数字组成
        • 1xx:信息提示,表示请求已被成功接收,继续处理。其范围为100~101。2xx:成功,服务器成功地处理了请求。其范围为200一206。
        • 3xx:重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,并告诉客户端新的资源地址位置。这时,浏览器将重新对新资源发起请求。其范围为 300~305。
        • 4xx:客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL。其范围为400~415。
        • 5xx:有时候客户端发送了一条有效请求,但 Web服务器自身却出错了,可能是Web服务器运行出错了,或者网站都挂了。5XX就是用来描述服务器内部错误的,其范围为500~505。
      • 常见状态码
        • 200:客户端请求成功,是最常见的状态。302:重定向。
        • 404:请求资源不存在,是最常见的状态。
        • 400:客户端请求有语法错误,不能被服务器所理解。401:请求未经授权。
        • 403:服务器收到请求,但是拒绝提供服务。500:服务器内部错误,是最常见的状态。
        • 503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
    • HTTP消息
      • HTTP消息又称为HTTP 头(HTTP header),由四部分组成,分别是请求头、响应头、普通头和实体头。
      • 请求头
        • Host
          • Internet主机和端口号
        • User-Agent
          • 客户端将它的操作系统、浏览器和其他属性告诉服务器
        • Referer
          • Referer包含一个URL,代表当前访问URL的上一个URL
        • Cookie
          • 表示请求者身份
        • Range
          • 多线程下载
        • x-forward-for
          • 代表请求端的IP,可以有多个,中间以逗号隔开
        • Accept-Charst
          • 请求报头域用于指定客户端接收的字符集
      • 响应头
        • Server
          • 服务器所使用的Web服务器名称
        • Set-Cookie
          • 向客户端设置Cookie,通过查看此头,可以清楚地看到服务器向客户端发送的 Cookie信息
        • Last-Modified
          • 资源的最后修改时间
        • Location
          • 服务器通过这个头告诉浏览器去访问哪个页面,这个头通常配合302状态码使用。
        • Refresh
          • 服务器通过Refresh头告诉浏览器定时刷新浏览器。
      • 普通头
        • 有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体
      • 实体头
        • 请求和响应消息都可以传送一个实体头。实体头定义了关于实体正文和请求所标识的资源的元信息。元信息也就是实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间等。常见的实体头如下。

    • HTTP协议与HTTPS协议的区别
      • HTTPS 的安全基础是SSL,即在HTTP下加入SSL层。
      • HTTP协议与HTTPS协议的主要区别如下。
        • HTTP是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的SSL加密传输协议。
        • HTTP与HTTP协议使用的是完全不同的连接方式,HTTP 采用80端口连接,而HTTP则是443端口。
        • HTTPS协议需要到ca申请证书,一般免费证书很少,需要交费,也有些Web容器提供,如TOMCAT。而HTTP协议却不需要。
        • ·HTTP连接相对简单,是无状态的,而 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,相对来说,它要比HTTP协议更安全。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值