Http请求头的x-requested-with 属性

#1

今天在查看一些关于对axios封装的博客中,很多都有以下这一部分:

// 拦截request,设置全局请求为ajax请求
axios.interceptors.request.use((config) => {
  config.headers['X-Requested-With'] = 'XMLHttpRequest'
  return config
})

说实话以前使用axios的时候并没有注意到这个属性,查看了一些说明之后发现 x-requested-with 赋予 ‘XMLHttpRequest’ 值表示这是一个ajax请求,而如果值为null的话 表示一个普通的请求。

让我不是很理解的是,如果不手动设置这个属性,请求数据也是能成功的,并且也没有体现出来这个请求就是同步的请求(页面没有阻塞)。那么普通请求具体应用的场景是什么样的? 如果 x-requested-with属性的设置是必要的话,什么时候需要设置?

#2

我理解的http请求是包含 ajax请求的,然后用的比较多的ajax请求的场景就是 请求api,用的比较多的http请求的场景比如说 浏览器访问一个url地址,或者 img标签之类的,或者请求js css资源应该都算。但是该如何解释使用 axios 等库发起请求时 不设置X-Requested-With属性,请求也能异步且成功呢?我查看到的资料来看,axios 没有对请求头中的X-Requested-With做默认处理,在chrome开发者工具中的network中的xhr下,确实也能找到请求头中不含X-Requested-With的一个请求,结果也正常了。那就不明白这个区别到底在哪里了。

#3

X-Requested-With 好像不是标准header