浏览器的通信能力
用户代理 user agent
通常在浏览器控制台可以看到,有一个用户代理样式表,我们认为他是浏览器提供的默认CSS
那为什么称之为用户代理呢?因为浏览器帮助我们自动发送请求,并自动对响应的内容进行解释,把响应回来的超文本解释成为用户友好的界面
浏览器什么时候会自动发起请求?
- 地址栏输入地址,按下回车
- 点击链接 GET请求
- form表单 POST请求
- 当解析HTML遇到
<link> 、<img>、 <script> 、<video> 、<audio>
等,浏览器拿到对应地址,发送GET请求 - 用户点击刷新
直接发送HTTP请求(右边是响应内容):
form表单发送相同请求的方式:
点击提交按钮或者在输入框中按回车,都可以发送请求。
GET请求和POST请求的区别:
- 浏览器发送GET请求不会带请求体(这是一个服务器和浏览器的约定,不是说不能放),(那GET请求要传递数据,可以把数据放在请求头、或者path里,通常放在query里,易于分享)
- GET传递的信息有限,适合传递少量数据,POST请求传递的信息没有限制,适合传递大量信息。
- GET请求只能传递ASCII码数据,遇到非ASCII码数据(汉字等)会进行编码,POST请求无该限制
- POST请求不会被保存在浏览器的历史记录中
- 刷新页面,如果页面是POST请求,则会提示用户是否重新提交,如果是GET请求,不会有提示
浏览器自动响应:
- 识别响应码,出现一些特殊响应码时,浏览器会自动进行处理,如301、302
- 根据响应结果作出不同处理:浏览器自动分析响应头中的content-type,根据不同值进行不同处理,如:text/lain:普通纯文本,原封不动显示;text/html:将响应体作为html页面进行渲染,text/javascript或者application/javascript:使用JS执行引擎解析;text/css:作为CSS样式解析,等等。
基本流程如下:
AJAX
AJAX就是在web应用程序中异步向服务器发送请求
他的实现方式有两种:HMLHttpRequest(XHR) 和 Fetch
这两者的区别如下: