[网络基础] Web请求与响应

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: Web请求过程浏览器得到主机域名,举例:www.baidu.com浏览器将域名解析成IP地址浏览器缓存→系统缓存→路由器缓存→ISP DNS缓存→从根域名服务器递归搜索浏览器用ip和随机端口号(默认80)连接服务器浏览器与服务器建立TCP连接(IP:80)发起 GET 请求服务器收到请求,发送响应浏览器获取服务器返回的数据(HTML代码),进行解析和显示释放TCP连接(不一定)HTTP报文HTTP报文分为请求报文和响应报文两类。

Web请求过程

  1. 浏览器得到主机域名,举例:www.baidu.com

  2. 浏览器将域名解析成IP地址
    浏览器缓存→系统缓存→路由器缓存→ISP DNS缓存→从根域名服务器递归搜索

  3. 浏览器用ip和随机端口号(默认80)连接服务器

    • 浏览器与服务器建立TCP连接(IP:80)
    • 发起 GET 请求
    • 服务器收到请求,发送响应
    • 浏览器获取服务器返回的数据(HTML代码),进行解析和显示
    • 释放TCP连接(不一定)

HTTP报文

HTTP报文分为请求报文和响应报文两类。请求报文和响应报文都由三个部分组成。

  1. 开始行
    用于区别是请求报文还是响应报文,在请求报文中开始行叫做请求行(Request-Line),在响应报文中开始行叫做状态行(Status-Line)。
    请求行的组成由“三个内容” 组成,即:方法、请求资源的URL、HTTP版本,三个内容之间用空格隔开

  2. 首部行
    用来说明浏览器、服务器和报文主体的一些信息,首部行可以是好几行也可以没有。 在每一个首部行中都有首部字段名和它的值,每一行结束的地方要
    有”回车“和”换行“。整个首部结束时,还有一个空行将首部行和后面的实体主体区别开。

  3. 实体主体(一般不使用)

请求报文实例

img_3d4bfccb5296ba2b8472faca57e362cc.png
  • 请求网址
    http://xxx.xxx.xxx.xx:8080/bms/

  • GET /bms/ HTTP/1.1
    请求行,请求方法、请求资源URL(使用相对URL)、HTTP版本

  • Host: xxx.xxx.xxx.xx:8080
    首部行由此开始,Host为主机域名。举例:浏览器输入http://www.baidu.com,则显示 www.baidu.com

  • Connection: keep-alive
    keep-alive表明浏览器告诉服务器发送完响应后仍然保持连接。如果为close则发送完就释放连接

  • Upgrade-Insecure-Requests: 1
    对应服务器的响应头的Content-Security-Policy: upgrade-insecure-requests。是告诉服务器,自己支持这种操作,也就是我能读懂你服务器发过来的上面这条信息,并且在以后发请求的时候不用http而用https。
    参考:chrome浏览器请求头中“Upgrade-Insecure-Requests:1”表示什么意思?

  • User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
    表示用户使用的浏览器类型和版本

  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
    浏览器能够处理的内容类型

  • DNT: 1
    Chrome浏览器开启 随浏览流量一起发送”不跟踪”请求 后会增加此字段
    参考:【HTTP】客户端识别与cookie机制

  • Accept-Encoding: gzip, deflate
    浏览器可以支持的编码。
    gzip 实体采用GNU zip编码
    deflate 用zlib格式压缩
    参考:http中的字符编码

  • Accept-Language: zh-CN,zh;q=0.9
    浏览器支持的语言

响应报文实例

img_7193e70138c49f87a2136bbc5a5ae442.png
  • 响应状态码

    • 1xx : 表示通知信息,如接受到了或是正在处理
    • 2xx :表示成功,如接受到了或是知道了
    • 3xx :表示重定向
    • 4xx :表示客户端错误,如请求的URL不正确
    • 5xx :表示服务器的错误,如服务器压力过大无法完成请求响应
  • Content-Type: text/html;charset=ISO-8859-1
    文档属于什么MIME类型

  • Content-Length: 61
    文档行数

  • Set-Cookie: JSESSIONID=8403645BCCA80AC2F4E28D61ECE7361F; Path=/bms; HttpOnly
    有HttpOnly则cookie不可通过js访问

其他

HTTP(Hyper Text Transfer Protocol)

参考:HTTP协议介绍

  • HTTP是无状态的
    同一个用户第二次访问同一个服务器上的页面时,服务器响应与第一次被访问时的相同

  • HTTP是无连接的
    通信的双方在交换HTTP报文之前不需要先建立HTTP连接。注意与浏览器和服务器建立TCP连接的区别。

参考

相关文章
|
1月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
82 1
|
2月前
|
缓存 网络协议 CDN
在网页请求到显示的过程中,如何优化网络通信速度?
在网页请求到显示的过程中,如何优化网络通信速度?
184 59
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
143 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
12天前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
14 1
|
12天前
|
前端开发 开发者
WEB自定义页面请求响应
Web组件支持在应用拦截到页面请求后自定义响应请求能力。开发者通过onInterceptRequest()接口来实现自定义资源请求响应 。自定义请求能力可以用于开发者自定义Web页面响应、自定义文件资源响应等场景。
20 0
|
2月前
|
数据采集 Web App开发 开发工具
|
2月前
|
数据安全/隐私保护
|
2月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
142 8
|
2月前
|
小程序 开发者
微信小程序之网络数据请求 wx:request的简单使用
这篇文章介绍了微信小程序中如何使用wx.request进行网络数据请求,包括请求的配置、请求的格式以及如何在开发阶段关闭请求的合法检验。
微信小程序之网络数据请求 wx:request的简单使用
|
2月前
|
运维 安全 网络安全
Web安全-企业网络架构
Web安全-企业网络架构
31 1
下一篇
无影云桌面