xhr,全称为XMLHttpRequest,用于与服务器交互数据,是ajax功能实现所依赖的对象,jquery中的ajax就是对 xhr的封装。
XHR(XMLHttpRequest)请求是一种在浏览器中发送HTTP请求的技术。它允许客户端(浏览器)通过JavaScript代码向服务器发送请求并获取服务器返回的数据,而无需刷新整个页面。
XHR请求常用于实现异步通信,即在不干扰用户当前操作的情况下与服务器进行数据交换。通过XHR请求,可以发送各种类型的请求,包括获取数据、提交数据、上传文件等。
XHR请求的过程包括发送请求、接收响应和处理响应三个步骤。发送请求时,可以指定请求的URL、请求方法、请求头和请求体等信息。接收响应后,可以获取响应状态码、响应头和响应体等信息。处理响应时,可以根据需要对返回的数据进行处理和展示。
XHR请求可以与服务器进行实时交互,从而实现动态更新页面内容、获取最新数据等功能。它是现代Web应用中常用的一种前端技术。
XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。
xhr 接口强制要求每个请求都具备严格的HTTP语义–应用提供数据和URL,浏览器格式化请求并管理每个连接的完整生命周期,所以XHR仅仅允许应用自定义一些HTTP首部,但更多的首部是不能自己设定的。
浏览器会拒绝绝对不安全的首部重写,以保证应用不能假扮用户代理、用户或请求来源,如Origin由浏览器自动设置,Access-Control-Allow-Origin由服务器设置,如果接受该请求,不包含该字段即可,浏览器发出的请求将作废。
如果想要启用cookie和HTTP认证,客户端必须在发送请求时通过XHR对象发送额外的属性(withCredentials),而服务器也需要以Access-Control-Allow-Credentials响应,表示允许应用发送隐私数据。同样,如果客户需要写入或读取自定义HTTP标头或想要使用“非简单的方法”的请求,那么它必须首先通过发出一个预备请求,以获取第三方服务器的许可!