深入分析java Web技术内幕 - web请求(1)

2019-08-09  本文已影响0人  attentionYSF

如何发起一个htpp请求

简单的说,发起一个HTTP请求的过程就是建立一个Socket通信的过程,且HTTP请求的数据格式要符合htpp协议的规定。

了解http协议中的header

列举几个常见的属性,详见 developer.mozilla - HTTP Headers

请求头 Request Header 说明
Accept-Charset 用于指定客户端接受的字符集
Accept-Encoding 可接受的内容编码
Accept-Language 自然语言 比如zh-cn
Host 指定被请求资源的Internet主机和端口号
User-Agent 客户端将它的操作系统、浏览器和其他属性告诉服务器
Connection 当前连接是否保持
Referer 首部包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 首部识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等
Pragma no-cache
Cache-Control no-cache

ctrl + F5 强制页面刷新,会在请求头中增加这两个参数,或者改变参数值为no-cache。此外,还有一种前端编程请求解决缓存的方法,在ajax请求中加入时间戳,保证每次请求的URL和参数不一致,避免了浏览器检测到相同的请求,从而使用缓存数据

响应头Request Header 说明
Server 使用的服务器名称
Content-type 指明发送给接受者的实体正文的媒体类型,如Content_Type:text/html;charset = GBK
Content-Encoding 告诉浏览器服务端采用的压缩编码
Content-Language 描述了资源所用的自然语言
Content-Length 指明实体正文的长度
Keep-Alive 保持连接的时间

HTTP请求过程

简要介绍用户在浏览器输入网址之后看到页面的过程

  1. 用户输入网址即URLwww.jianshu.com

  2. DNS将域名解析成IP地址

    • 浏览器从浏览器的缓存中查找解析过的域名对应的IP,如果找到,直接返回IP地址,后续步骤不执行

    • 如果浏览器缓存中未找到,则从浏览器所安装在的终端(PC电脑)缓存中寻找,windows操作系统C:\Windows\System32\drivers\etc\hosts文件中,可配置域名与对应的IP地址,如果找到,直接返回IP地址,后续步骤不执行

    • 见网络3D结构图


      DNS解析过程图.png

      名词解释
      Local DNS Server:本地域名解析服务器,比如说,学校的网络,会在学校有一台域名解析服务器;家庭网络,运营商(电信、联通)会有域名解析服务器
      Root DNS Server:顶级域名服务器,全球只有13台,大部分在美国
      gTLD Servr:国际顶尖域名服务器,如.com .cn .org等
      Name Server:域名直接注册的地方,比如阿里云腾讯云域名注册

  3. 用户浏览器根据IP地址向服务器发起请求

  4. 服务器端发回请求响应数据给浏览器

  5. 数据返回后,浏览器解析数据发现还有一些静态的资源(css,js,img),然后再次发起请求

上一篇下一篇

猜你喜欢

热点阅读