判断是否ajax请求原理(关键勿动)

判断方式一

浏览器,jquery、axios等js框架,发送请求时,会携带 accept 请求头,但该请求头的值是不同的

浏览器

浏览器发请求时,发送请求时,携带 accept 请求头的值包含 text/html,,如下:

jquery、axios

jquery、axios 等js框架,发送请求时,携带 accept 请求头的值包含 application/json,如下:

uni-app

携带 accept 请求头,其值包含 application/json

小程序

使用某些小程序发请求,一般会携带 accept 请求头,其值包含 application/json,具体看该小程序开发文档

跨域时

跨域时,有些小程序发请求,accept头的值是 */*,所以需要 指定accept头,否则无法判断

uni-app 携带 accept 请求头,但其值是 */*,需要指定该请求头

判断方式二

判断 x-requested-with 请求头

jquery

jquery 发送请求时,会携带 x-requested-with 请求头,其值是 XMLHttpRequest

axios

axios 发送请求时,默认不会携带 x-requested-with 请求头,所以需要指定携带该请求头,否则无法判断是否ajax

浏览器

浏览器 发送请求时,不会携带 x-requested-with 请求头

uni-app

不会携带 x-requested-with 请求头

小程序

使用某些小程序发请求,可能 需要指定 x-requested-with 头,具体看该小程序开发文档

跨域时

跨域时,服务器默认不允许携带该请求头,所以jquery不会发该请求头

需要 前端加该请求头,后端也需要允许跨域携带该请求头,否则无法携带


原文出处:/show_1IX72EY3DLiv.html