4.http
4.1 http是什么
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而 [9] 消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
- 文本:html,字符串,~...
- 超文本:图片,音乐,视频,定位,地图......
- 默认端口:80
Https:安全的
- 443
4.2 两个时代
- http 1.0
- HTTP/1.0:客户端与web服务器连接后,只能获得一个web资源,断开连接
- http 2.0
- HTTP/1.1:客户端与web服务器连接后,可以获得多个资源。
4.3 http请求
- 客户端->发请求->服务器
百度:
Request URL: https://www.baidu.com/ 请求地址
Request Method: GET 请求方法 get方法/post方法
Status Code: 200 OK 状态码:200
Remote(远程) Address: 36.152.44.95:443 远程地址
Referrer Policy: strict-origin-when-cross-origin 协议
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9 //语言
Cache-Control: max-age=0 //缓存控制
Connection: keep-alive
Cookie: BAIDUID=6F78CADB48F2B03A7D8EE0ED84A267FB:FG=1; BAIDUID_BFESS=6F78CADB48F2B03A7D8EE0ED84A267FB:FG=1; BIDUPSID=6F78CADB48F2B03A7D8EE0ED84A267FB; PSTM=1665291425; ZFY=KEcc1WvP79HRAXatl26yBQ2QzNN76Q8UWJGsgRg8H7c:C; newlogin=1; __bid_n=18409e5cc5c56c8b9e4207; BD_UPN=12314753; BA_HECTOR=8000a40k2la40124al20ael71hmen1b1e; BD_HOME=1; H_PS_PSSID=36561_37691_37584_36885_37628_37729_37536_37718_26350; ab_sr=1.0.1_ZjJmNTUzZGNlYTBhNWJjYzJlZGZjNjk5M2MwYTE3ZDM2NWUwOTBiOWI3MTFlYzA2Yzk2ZDlmYjkxN2MxNTFiNDBkMjAzMWI0YjI4M2M0MjBjODkxYWM4NGJiMDMxNjA0MzM1NTkyOWUwZDMzZjliZTk1ZDQyOTkxYzBmZTI4ZjMzYmRhMjc3MzAzY2FlOTg4ZTgyNDg4ODlhYjg0NzE0ZA==; RT="z=1&dm=baidu.com&si=c77gmld3la&ss=la6efnad&sl=4&tt=3l6&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=q6iy&ul=q7px&hd=q7x2"
Host: www.baidu.com
sec-ch-ua: "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
1.请求行
- 请求行中的请求方式:GET
- 请求方式:GET,POST
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效。
- post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
2.请求头
Accept: 告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language: 告诉浏览器,它的语言环境
cache-Control:缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接
host:主机...
4.4 http响应
- 服务器->响应->客户端
百度:
Bdpagetype: 1
Bdqid: 0xd8f1c9cf00177c86
Connection: keep-alive //连接
Content-Encoding: gzip //编码
Content-Type: text/html; charset=utf-8 //类型
Date: Mon, 07 Nov 2022 06:50:53 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=36561_37691_37584_36885_37628_37729_37536_37718_26350; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1667803853080339303415632497672476654726
Transfer-Encoding: chunked
X-Frame-Options: sameorigin
X-Ua-Compatible: IE=Edge,chrome=1
1.响应体:
Accept: 告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language: 告诉浏览器,它的语言环境
cache-Control:缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接
host:主机...
Refresh:高速客户端,多久刷新一次;
Location:让网页定位;
2.响应状态码(重点)
200:请求响应成功 200
3xx:请求重定向
- 重定向:你重新到我给你的新位置去。
4xx:找不到资源 404
- 资源不存在;
5xx:服务器代码错误 500 502:网关错误
常见面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示出来,经历了什么?
1.域名解析:作为客户端,浏览器接收到地址之后,首先会到windows系统文件的hosts中查找是否有对应的ip地址,若没有则需要询问DNS域名解析服务器该域名对应的ip地址。(DNS缓存)
2.三次握手:获取到正确的ip地址后,客户端会与服务器建立TCP连接(三次握手),(网络层、数据链路层、物理层)
第一次握手:客户端向服务器端发送一个SYN段,该段中包含客户端的初始序列号。
第二次握手:服务器端返回客户端SYN+ACK,该端中包含服务器端的初始序列号,ACK表示,已经确定收到客户端的SYN段。
第三次握手:客户端向服务器端响应一个ACK端,ACK表示,已经确定接受到服务器端的SYN段。
3.建立起TCP连接后发起http请求,客户端向服务器端发送请求,包含请求行,请求头。主要的两种请求方式(GET与POST)
--GET:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据的内容,不安全,但高效。
--POST:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
4.(服务器响应http请求)服务器处理请求,并返回响应,包含状态码,响应头,响应体。
5(浏览器解析http代码)浏览器收到响应,解析http代码渲染页面,并在浏览器页面展示出来。
6.(断开连接)http1.0短连接,http1.1长连接。
标签:浏览器,JavaWeb,04,请求,http,Accept,响应,Http,客户端 From: https://www.cnblogs.com/Jinx8823/p/16878701.html