深入分析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请求过程
简要介绍用户在浏览器输入网址之后看到页面的过程
-
用户输入网址即URLwww.jianshu.com
-
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:域名直接注册的地方,比如阿里云腾讯云域名注册
-
-
用户浏览器根据IP地址向服务器发起请求
-
服务器端发回请求响应数据给浏览器
-
数据返回后,浏览器解析数据发现还有一些静态的资源(css,js,img),然后再次发起请求