什么是 AJAX?( 二 )

请求的三个参数分别是:请求的方法、请求的地址、和是否采用异步请求 。
4.发送请求
request.send();说实话,虽然只有4步,但是通过这种原生的方法发送请求还是觉得有些复杂,那有没有什么简单的方法呢?
AJAX 的其他使用方式JQuery 使用AJAX
JQuery将上述过程封装的很好,使用起来也非常简单(只举出最简单的例子,详细还请移步官方文档):

什么是 AJAX?

文章插图
 
Vue 使用 AJAX
vue官方推荐使用axIOS来进行请求,这里同样举出一个最简单的例子
什么是 AJAX?

文章插图
 
微信小程序使用AJAX
微信小程序的请求就是wx.request这个api,wx.request(一些对象参数),微信小程序不同于浏览器的ajax请求,可以直接跨域请求不用考虑跨域问题 。
什么是 AJAX?

文章插图
 
拓展HTTP状态码
看到这其实我们就可以发送数据了,那怎么接收返回的数据呢?事实上,这已经不是在AJAX的讨论范围了,但是作为一个拓展知识点,我还是想介绍下状态码这个东西 。状态码的作用是服务器返回给客户端的用来描述HTTP请求的状态的 。用来描述HTTP请求的状态码太多了,这里介绍一些常见的状态码 。
  • 200 表示从请求成功
  • 301 表示永久性重定向 。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI 。
  • 302 表示临时性重定向 。
  • 404 表示服务器上找不到请求的资源 。
  • 500 表示服务器端在执行请求时发生了错误 。多半是因为Web应用存在的bug或某些临时的故障 。
  • 503 表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求 。
获取网页中的XHR请求
这时就有人可能会问了,有没有什么办法可以获取一个网页中的XHR请求呢?当然是有的,这一过程其实说的宽泛点其实就是抓包,这里我以掘金为例,介绍下获取网页中的XHR请求 。
首先我们打开Chrome浏览器,然后进入开发者工具(按F12或者网页右击选择“检查”),选择Network选项卡,我们可以发现下面有很多东西,比如Filter、All、HXR、JS等等,通过这个工具这里我们可以看见一个网页渲染过程中的所有请求(不只是XHR,还有JS、css等) 。
什么是 AJAX?

文章插图
 
随后我们选择XHR,就会出现请求这个网页过程中的所有的XHR请求了 。包括name、status、size等信息 。
什么是 AJAX?

文章插图
 
之前提到过了,我们通过XHR携带的数据返回给浏览器渲染页面,到底是怎么实现的呢?不急,我们先来看一下现在的页面是什么样的:
什么是 AJAX?

文章插图
 
其实这些东西都在其中一个XHR中,于是我们随便点击一个名为query的XHR对象(其实并不是随便点击的),然后移到Response选项卡:
什么是 AJAX?

文章插图
 
我们看到了很长的一段JSON数据,格式化后(这里我们可以直接切换到Preview选项卡)筛选出一部分可以看到:
什么是 AJAX?

文章插图
 
是不是刚才那个页面里面的东西都在这里面呢?
简单分析下
既然都获取到请求数据了,再不分析下都感觉对不起这么多的数据了,让我们把选项卡从Response移到Headers上,我们惊讶的发现竟然出现了好多东西:
什么是 AJAX?

文章插图
 
这里我们简单说明下各个参数:
General 部分
首先是General部分:
什么是 AJAX?

文章插图
 
我们可以看出,请求地址是 https://web-api.juejin.im/query,请求方法为POST方法,请求状态是200,也就是请求成功了,同时还可以知道这次请求的IP地址是 119.254.97.159:443 。
Referrer Policy
这里说下Referrer Policy这个字段,这个字段解释起来有点小麻烦,我们知道当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息 。但是也有成为用户的一个不安全因素,比如有些网站直接将 sessionid 或是 token 放在地址栏里传递的,会原样不动地当作 Referrer 报头的内容传递给第三方网站 。所以就有了 Referrer Policy,用于过滤 Referrer 报头内容,目前是一个候选标准,不过已经有部分浏览器支持该标准 。这里为 no-referrer-when-downgrade的意思是指当发生降级(比如从 https:// 跳转到 http:// )时,不传递 Referrer 报头 。但是反过来的话不受影响 。通常也会当作浏览器的默认安全策略 。


推荐阅读