# XMLHttpRequest
# XML的创建
创建 XML 对象。来执行实际的网络请求操作。
为 XML 对象注册回调函数 网络请求比较耗时,所以要注册回调函数。
- ontimeout 用来监控超时请求。如果请求超时了,改函数会被调用。
- onerror 监控出错信息,后台请求出错了,就会被调用。
- onreadystatechange 监控后台请求过程的状态。可以监控到 HTTP 头加载完成的消息,HTTP 响应体以及数据加载完成的消息等。
配置基础的请求信息 配置请求信息,通过 open 配置一些基础请求信息。
然后通过 xhr 内部属性配置一些其他信息。 - xhr.timeout = 3000; - xhr.responseType 配置服务器返回的格式。 json/text
- 发起请求 xhr.send 来发起网络请求。
渲染进程会将请求发送给网络进程,网络进程来负责资源的下载,等网络进程接收到数据之后,就会利用 IPC 来通知渲染进程。渲染进程接收到消息之后,会将 xhr 的回调函数封装成任务并添加到消息队列中。等主线程循环系统执行到该任务的时候,来调用。
- 如果出错了,执行 xhr.onerror.
- 如果超时了,执行 xhr.ontimeout
- 如果正常的数据接收,执行 onreadystatechange 来反馈。
# XML的注意事项
- 跨域问题 同源策略的影响。 可以看到下面的警告信息。
Access to XMLHttpRequest at 'http' from origin 'http://' has ...
- HTTPS 混合内容的问题 HTTPS 混合内容是 HTTPS 页面中包含了不符合 HTTPS 安全要求的内容,比如包含了 HTTP 资源,通过 HTTP 加载的图像、视频、样式表、脚本等。
索然有时候报警告也能访问。
Mixed Content: The page at 'http://' was loaded over HTTPS. ...
而使用 XMLHttpRequest 请求时,浏览器认为这种请求可能是攻击者发起的,会阻止此类危险的请求。就会报错。
← setTimeout 宏任务/微任务 →