一次完整的HTTP请求流程(浏览器地址栏输入URL,按下回车之后的流程)

1、校验URL
    浏览器会检测这个url是否正确存在,如果不合法,返回一个默认的页面。(比如,如果输入的不是合法的网址,浏览器将调用默认搜索引擎比如百度,对输入的内容进行搜索,返回搜索结果页)。
2、DNS解析
    浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址。解析优先级依次为:浏览器缓存 => 系统缓存 => 路由器缓存 => 本地域名服务器(LDNS) => 顶级域名服务器

3、建立TCP连接(三次握手)
    当解析得到目的地的IP地址之后,在进行http请求之前,需要先建立TCP连接。TCP建立连接的过程,即三次握手。在别的文章中提到了,这里不再多说。

4、发送HTTP请求
    HTTP协议定义了几种请求方式,比如:GET/POST/PUT/DELETE等等,在浏览器输入URL进行请求,属于GET方法。
    一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
    请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据,这一行非常重要,必不可少。

请求行: 包括请求方式、请求地址、协议版本
请求头: 包括一系列 key:value格式的数据。比如 Content-Type:application/x-www-form-urlencoded 
请求数据:真正请求所需要的数据,比如登录时的账号密码。

一个POST方法的HTTP请求报文实例:

POST  /test/index.html HTTP/1.1    请求行 
Host: localhost 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 
Accept-Language: zh-cn,zh;q=0.5 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 
Referer: http://localhost/ 
Content-Length:25 
Content-Type:application/x-www-form-urlencoded 
  空行 
username=admin&password=123456  请求数据

5.、服务器处理请求并返回HTTP报文
    请求到达服务器,服务器经过后端自定义的规则进行处理。比如经过Nginx进行路由,如果后端业务是由JAVA语言的SpringCloud实现,可能经过网关路由,鉴权,然后经过一系列的过滤器、拦截器,再到实际的业务代码。当执行完毕后,将执行结果组装成HTTP响应报文返回。

6、浏览器解析渲染页面
    浏览器对响应报文进行解析渲染,这个过程包括数据解析,资源加载(比如JS、CSS、图片)。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值