浏览器的通讯能力(1)——网络基础(三)
用户代理
浏览器可以代替用户完成 http 请求,代替用户解析响应结果,所以我们称之为:用户代理 user agent
在网络层面,对于前端开发者,必须要知道浏览器拥有的两大核心能力:
- 自动发出请求的能力
- 自动解析响应的能力
自动发出请求的能力
当一些事情发生的时候,浏览器会代替用户自动发出 http 请求,比如:
- 在浏览器输入地址,并按下了回车
- 用户点击了页面中的 a 元素
- 当用户点击了提交按钮<button type='submit'>....</button>(这种方式用的越来越少了)
- 当解析 HTML 时遇到了<link>,<img><script><video><audio>等元素
- 用户点击了刷新
从古至今,浏览器都有一个约定:当发送 GET 请求时,浏览器不会附带请求体
这个约定深刻影响着后续的前端和后端开发,现在几乎所有人都在潜意识中认同了这一点,这也就造成了 GET 和 POST 的各种差异(也就是平时我们说到的差异,实际两者是没有区别的,可以看上一篇文章😁)。这里浅说一下差异:
- 浏览器在发送 GET请求时,不会附带请求体
- GET 请求的传递信息量有限,适合少量数据;POST 请求的传递信息量没有限制,适合传输大量数据。一般取决于浏览器的限制。
- GET 请求只能传递 ASCII 数据,遇到非 ASCII 数据要编码;POST 请求没有限制
- 大部分 GET 请求传递的数据都附带在 path 参数中,能够通过分享地址完整的重现页面,但同时也暴露了数据,若有敏感数据传递,不应该使用 GET 请求,至少不应该放在 path 中。
- POST 不会被保存到浏览器的历史记录中
- 刷新页面时,若当前的页面是通过 POST 请求得到的,则浏览器会提示用户是否重新提交。GET 则没有
自动解析响应的能力
浏览器不仅有发送请求的能力,还能够针对服务器的响应做出不同的自动处理
- 识别响应码
2.根据响应结果做出不同的处理:
浏览器根据响应头中的 Content-type,根据不同的值,做不同的处理,比如:
text/plain:普通的纯文本,浏览器通常会将响应体原封不动的显示到页面
text/html:html 文档,浏览器通常会将响应体作为页面进行渲染
text/css: css 代码,浏览器会将它视为样式
text/jepg:浏览器会将它视为 jpg 图片
text/javascript或者application/javascript:js代码,浏览器通常会使用 js 执行引擎将它解析执行
attachment:附件,会触发下载功能---该值和其他值不同,应放到 Content-Disposition中。
基本流程


浙公网安备 33010602011771号