浏览器输入 url 按回车背后经历了哪些?
1.在 PC 浏览器的地址栏输入一串 URL,然后按 Enter 键这个页面渲染出来,这个过程中都发生了什么事?
1、首先,在浏览器地址栏中输入 url,先解析 url,检测 url 地址是否合法
2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。
浏览器缓存:浏览器会记录 DNS 一段时间,因此,只是第一个地方解析 DNS 请求;操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的 DNS 查询缓存);
路由器缓存:如果上述两个步骤均不能成功获取 DNS 记录,继续搜索路由器缓存;
ISP 缓存:若上述均失败,继续向 ISP 搜索。
3、在发送 http 请求前,需要域名解析(DNS 解析),解析获取相应的 IP 地址。
4、浏览器向服务器发起 tcp 连接,与浏览器建立 tcp 三次握手。
5、握手成功后,浏览器向服务器发送 http 请求,请求数据包。
6、服务器处理收到的请求,将数据返回至浏览器
7、浏览器收到 HTTP 响应
8、浏览器解码响应,如果响应可以缓存,则存入缓存
9、 浏览器发送请求获取嵌入在 HTML 中的资源(html,css,javascript,图片,音乐······),对于未知类型,会弹出对话框。
10、 浏览器发送异步请求。
11、页面全部渲染结束。
GET 和 POST 的区别
2.get 和 post 请求区别,这个是被问烂的题了首先这个题看似简单,实际上是个送命题!如果你百度搜到的标准答案可能是这样的(本标准答案参考自 w3schools):
? GET 在浏览器回退时是无害的,而 POST 会再次提交请求。
? GET 产生的 URL 地址可以被 Bookmark,而 POST 不可以。
? GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。
? GET 请求只能进行 url 编码,而 POST 支持多种编码方式。
? GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。
? GET 请求在 URL 中传送的参数是有长度限制的,而 POST 么有。
? 对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制。
? GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。
? GET 参数通过 URL 传递,POST 放在 Request body 中。
如果我告诉你,你死记硬背的这些所谓“标准答案”不是面试官想要的,你肯定不服,首先从安全性讲,get 和 post 都一样,没啥所谓的哪个更安全get 请求参数在 url 地址上,直接暴露,post 请求的参数放 body 部分,按 F12也直接暴露了,所以没啥安全性可言“
GET 参数通过 URL 传递,POST 放在 Request body 中”这个其实也不准,post请求也可以没 body,也可以在 url 传递呢?
如果我告诉你 get 请求和 post 请求本质上没区别,你肯定不信!GET 和 POST 有一个重大区别,简单的说:
GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。
长的说:
对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据);
而对于 POST,浏览器先发送 header,服务器响应 100 continue,浏览器再发送data,服务器响应 200 ok(返回数据)
原文:https://www.cnblogs.com/zhuzhubaoya/p/10469188.html