浏览器的通信能力

浏览器的通信能力

用户代理

浏览器可以代替用户完成http请求,代替用户解析响应结果,所以我们称之为:

用户代理 user agent

在网络层面,对于前端开发者,必须要知道浏览器拥有的两大核心能力:

  • 自动发出请求的能力
  • 自动解析响应的能力

自动发出请求的能力

当一些事情发生的时候,浏览器会代替用户自动发出http请求,常见的包括:

  1. 用户在地址栏输入了一个url地址,并按下了回车

    浏览器会自动解析URL,并发出一个GET请求,同时抛弃当前页面。

  2. 当用户点击了页面中的a元素

    浏览器会拿到a元素的href地址,并发出一个GET请求,同时抛弃当前页面。

  3. 当用户点击了提交按钮<button type="submit">...</button>

    浏览器会获取按钮所在的<form>元素,拿到它的action属性地址,同时拿到它method属性值,然后把表单中的数据组织到请求体中,发出指定方法的请求,同时抛弃当前页面。

    这种方式的提交现在越来越少见了

  4. 当解析HTML时遇到了<link> <img> <script> <video> <audio>等元素

    浏览器会拿到对应的地址,发出GET请求

  5. 当用户点击了刷新

    浏览器会拿到当前页面的地址,以及当前页面的请求方法,重新发一次请求,同时抛弃当前页面。

浏览器在发出请求时,会自动附带一些请求头

重点来了

从古至今,浏览器都有一个约定:

当发送GET请求时,浏览器不会附带请求体

这个约定深刻的影响着后续的前后端各种应用,现在,几乎所有人都在潜意识中认同了这一点,无论是前端开发人员还是后端开发人员。

由于前后端程序的默认行为,逐步造成了GET和POST的各种差异:

  1. 浏览器在发送 GET 请求时,不会附带请求体

  2. GET 请求的传递信息量有限,适合传递少量数据;POST 请求的传递信息量是没有限制的,适合传输大量数据。

  3. GET 请求只能传递 ASCII 数据,遇到非 ASCII 数据需要进行编码;POST 请求没有限制

  4. 大部分 GET 请求传递的数据都附带在 path 参数中,能够通过分享地址完整的重现页面,但同时也暴露了数据,若有敏感数据传递,不应该使用 GET 请求,至少不应该放到 path 中

  5. POST 不会被保存到浏览器的历史记录中

  6. 刷新页面时,若当前的页面是通过 POST 请求得到的,则浏览器会提示用户是否重新提交。若是 GET 请求得到的页面则没有提示。

自动解析响应的能力

浏览器不仅能发送请求,还能够针对服务器的各种响应结果做出不同的自动处理

常见的处理有:

  1. 识别响应码

    浏览器能够自动识别响应码,当出现一些特殊的响应码时浏览器会自动完成处理,比如301、302

  2. 根据响应结果做不同的处理

    浏览器能够自动分析响应头中的Content-Type,根据不同的值进行不同处理,比如:

    • text/plain: 普通的纯文本,浏览器通常会将响应体原封不动的显示到页面上

    • text/html:html文档,浏览器通常会将响应体作为页面进行渲染

    • text/javascriptapplication/javascript:js代码,浏览器通常会使用JS执行引擎将它解析执行

    • text/css:css代码,浏览器会将它视为样式

    • image/jpeg:浏览器会将它视为jpg图片

    • application/octet-stream:二进制数据,会触发浏览器下载功能

    • attachment:附件,会触发下载功能

      该值和其他值不同,应放到Content-Disposition头中。

基本流程

访问:https://oss.duyiedu.com/test/index.html

image-20220428165629557

AJAX

浏览器本身就具备网络通信的能力,但在早期,浏览器并没有把这个能力开放给JS。

最早是微软在IE浏览器中把这一能力向JS开放,让JS可以在代码中实现发送请求,并不会刷新页面,这项技术在2005年被正式命名为AJAX(Asynchronous Javascript And XML)

AJAX 就是指在web应用程序中异步向服务器发送请求。

它的实现方式有两种,XMLHttpRequest 简称XHRFetch

以下是两者的对比

功能点XHRFetch
基本的请求能力
基本的获取响应能力
监控请求进度
监控响应进度
Service Worker中是否可用
控制cookie的携带
控制重定向
请求取消
自定义referrer
API风格EventPromise
活跃度停止更新不断更新

转自 渡一教育 大师课

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
通信行业调研报告 通信行业调研报告全文共13页,当前为第1页。  篇一:通信行业调研报告   通信行业调研报告   前言:   传统运营商在整个电信网络以及移动通信网络建设和运营的产业链中,占据核心地位,对于电信、宽带、移动这些通信业务的分析,也必须以运营商为核心,进而推广到各个子行业。而通信设备行业又可以细分为系统设备、辅助设备、系统集成、光纤光缆、网络规划和优化以及运维、终端设备,增值服务提供等子行业,这条产业链上其他各个子行业或多或少都与运营商有着联系。   互联网产业蓬勃发展,成为社会不可或缺的生产和交易平台,带动一系列新兴产业如云计算,电子商务、社交网络发展的同时也对在高速泛在的信息网络提出更高要求。   固定宽带的不可替代性,其独享、安全、可靠的特性以及未来发展的超高速特性,无疑将孕育出众多的商业机会,成为未来经济发展和产业结构调整的基础。   移动互联网发展迅猛,移动数据流量快速增长;进入数据运营时代,数据业务提供能力将成为用户选择网络提供商的最重要因素。   4G牌照的发放、国家宽带战略的确定,还有物联网技术的发展都给通信市场带来了利好消息,与其他大部分行业整体经营环境不善相比,通信产业的发展机遇被业界所看好。预计整个通信产业链将超过5000亿元的市场规模,包括设备制造商、工程商、软件商、运营商、终端制造商和系统集成商等上中下游企业均有获利机会和机遇。未来,将会有更多的OTT服务商进入通信行业,这对行业尤其是运营商的商业模式和业务流程影响很大,服务的精细化和定制化将成为未来行业的主题,而通信市场会因此更加活跃、管理难度加大,市场竞争也会更加激烈。   主体:   通信行业中各细分行业平均薪资(月薪)显示,大型设备商以8974元/月位居第一,通信终端设备商以8696元/月紧随其后,而运营商仅以3783元/月垫底。在年终奖数据中,运营商虽有提升,但远不及通信终端设备商、大型设备商万元以上的前列水平。看来运营商薪资水平不高并非空穴来风。   从技术角度讲,设备商收入高无可厚非,研发与运营的技术含量毕竟不同。设备商收入虽高,相应的工作强度和压力却非常之大。运营商收入较低,工作相对轻松,各方面的要求也较低,是稳定之选。作为运营商应在创新通信技术、完善客户服务上有所突破,只有增强创新和服务能力,才能提升绩效和员工薪资。 通信行业调研报告全文共13页,当前为第2页。综合通信行业不同职位平均月薪与年终奖两份数据,系统工程师与项目经理平分秋色,前者月薪遥遥领先(11000元/月),后者年终奖(16000元)最高。硬件工程师和数据通信工程师的月薪和年终奖始终保持较高水平。但按地区出现频率来计算,项目经理/项目主管在广西壮族自治区、河南、内蒙古自治区、福建、湖北、辽宁这些省份均是平均月薪最高的。   同时在这两份数据曲线中,通信电源工程师薪资均为最低点。不过在重庆、海南、浙江、安徽、河北、北京这些省市,平均月薪最低的是技术支持。技术支持分售前和售后,售后技术支持在技术上更胜一筹,售前则与市场更接近,需要与客户沟通。技术支持工作辛苦,技术含量不算高,且多"体力活"。只有接触核心技术的技术支持才有高回报的可能,普通技术支持工资不高有因可循。   1,3G是第三代移动通信的简称,3G工程师包括3G无线软件工程师、3G无   线研发质量工程师、3G无线网络规划等,中国被世界认为是全球最大的3G移动市场,但是与3G相关的人才却严重失调。据前程无忧网的薪资数据报告显示高级嵌入式软件工程师的年薪在30万左右,即便是初级的嵌入式软件开发人员,基本工资也在5000/月,相信在未来工资待遇还会有所改善。 随着3G和4G通信的到来及未来通信的发展,通信技术人才的需求量越来越大。   2、软件测试工程师指理解产品的功能要求,并对其进行测试,通信行业调研报告全文共13页,当前为第3页。检查软件又没有(BUG),简单的说是但当"质量管理的"角色软件测试人员的主要职责是对软件产品的整个开发过程进行监督和检验,使之能够达到满足客户的需求,因此对于企业来讲是十分重要的岗位。   3、网络工程师 网络工程师是通过学习和训练,掌握网络技术的理论知识和   操作技能的网络技术人员。网络工程师能够从事计算机信息系统的设计、建设、运行和维护工作。网络工程师是指基于硬、软件两方面的工程师,根据硬件和软件的不同、认证的不同,将网络工程师划分成很多种类。目前,大家比较认可的是软件方面的网络工程师。   4、电子商务 电子商务通常是指是在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于浏览器/服务器应用方式,买卖双方不谋面地进行各种商贸活动,实现消费者的网上购物、商户之间的网上交易和在线电子支付以及各种商务活动、交易活动、金融活动和相关的综合服务活动的一种新型的商业运营模

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IndulgeBack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值