js之网络请求与远程资源

概述

方式
XMLHttpRequest
fetch api
navigator.sendBeacon
websocket

XMLHttpRequest

  • 请求:先open然后send
    • open(method, url, async)
  • 响应:作为XMLHttpRequest的属性,有responseText/responseXMLstatus/statusText
  • 异步请求
    • readyState:其支持的值有0(未初始化),1(已打开),2(已发送),3(接收中),4(已完成)
    • 事件onreadystatechange
  • 请求头:setRequestHeader
  • 响应头:getResponseHeader/getAllResponseHeaders
  • 表单数据:使用FormData
  • 超时:属性使用timeout,事件使用ontimeout
  • 进度事件
    • loadstart:接收到响应的第一个字符
    • progress:接收到响应反复触发
    • error:请求出错时触发
    • abort:调用abort终止连接时触发
    • load:接收响应完成时触发
    • loadend:通信完成时,在load事件 之后
  • 跨源资源共享
    • 预检请求:客户端发送Origin/Access-Control-Request-Method/Access-Control-Request-Headers,服务端回复Access-Control-Allow-Origin/Access-Control-Allow-Methods/Access-Control-Allow-Headers/Acesss-Control-Max-Age
    • 凭据请求:客户端设置withCredentials,服务端加Access-Control-Allow-Credentials

Fetch API

其基础组成为
Fetch API
Request
Response
Headers

fetch方法支持形式

  • fetch(url, initobj):其中initobj中可以包含method, headers, body
  • fetch(request)

Request:其克隆方式有两种,在请求体初始读取时,使用克隆会报错

  • new Request(request)
  • clone

Response:其克隆使用clone方法,限制与Request相似。

body混入:其支持text,json,formData,arrayBuffer,blob方法。在通过流读取时,取body属性,操作处理可以为同步或者异步处理函数

Beacon API

其属于navigator方法,navigator.sendBeacon(url, data)

websocket

  • 创建:new websocket(url)
  • 状态:readystate,0表示正在建立,1表示连接已建立,2连接正在关闭,3表示连接已经关闭
  • 关闭:使用close方法
  • 发送数据:send(data)
  • 接收数据:通过onmessage事件,事件对象的数据通过 event.data
  • 事件
    • onopen:连接建立时
    • onerror:发生错误时
    • onclose:连接关闭时,事件属性有wasClean(连接是否干净关闭),code,reason
相关推荐
weixin_422555422 分钟前
el-menu子菜单点击就被激活,恢复之前的激活状态
javascript·vue.js·elementui
wuyk5558 分钟前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
geovindu8 分钟前
CSharp: Wordcloud
开发语言·后端·c#·.net·.netcore·词云
yonlingxu14 分钟前
创客匠人深度陪跑案例:盘活存量 IP,解锁婚恋知识赛道第二增长曲线
网络·网络协议·tcp/ip
Java小白笔记25 分钟前
Java 实现 ZIP 压缩包生成方案
java·开发语言·网络·7-zip
Persistent的粽子!26 分钟前
C++:类与对象(一)
开发语言·c++·经验分享·笔记
anxiao_m30 分钟前
数据安全合规时代,企业跨网文件传输该如何落地
网络
weixin_4407305044 分钟前
使用pytest中方法控制执行步骤(test_begin.py、test_end.py,@pytest.mark.run(order=1))
开发语言·python·pytest
库玛西1 小时前
深入浅出Linux select网络模型:从底层位图原理到C++面向对象高级封装
linux·服务器·网络·c++·ubuntu
geovindu1 小时前
CSharp: Command Pattern
开发语言·后端·c#·.net·.netcore·命令模式·行为模式