当前位置: 首页 > article >正文

es6 fetch

对比XHR

在这里插入图片描述

🛠️ fetch 所有配置项

fetch(url, {// ========== 核心配置 ==========method: 'GET',           // HTTP 方法: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONSheaders: {               // 请求头(支持 Headers 对象或普通对象)'Content-Type': 'application/json', // 常用 Content-Type 值:// - application/x-www-form-urlencoded  默认表单提交(键值对)// - application/json  JSON 数据// - application/octet-stream  任意二进制数据(如文件下载)// - multipart/form-data 表单文件上传(支持二进制)// - text/plain  纯文本(无格式)'Authorization': 'Bearer token',    // 身份验证'Accept': 'application/json',        // 指定响应格式'X-Custom-Header': 'value'          // 自定义头},body: null,              // 请求体数据,支持以下类型:// - String(JSON 字符串)// - FormData(表单/文件上传)// - URLSearchParams(查询参数,自动设置 Content-Type)// - Blob/BufferSource(二进制数据)// - ReadableStream(流式数据,实验性)// ========== 网络策略配置 ==========mode: 'cors',           // 请求模式,可选值:// - cors: 允许跨域(需服务器返回 CORS 头)// - no-cors: 禁止跨域(响应不可读,仅用于简单请求)// - same-origin: 仅同源请求credentials: 'same-origin', // Cookie 策略,可选值:// - omit: 不发送 Cookie(默认)// - same-origin: 同源时发送// - include: 跨域也发送(需服务器允许 credentials)cache: 'default',       // 缓存策略,可选值:// - default: 遵循浏览器缓存// - no-store: 禁用缓存// - reload: 强制绕过缓存// - no-cache: 使用缓存但重新验证// - force-cache: 优先使用过期缓存redirect: 'follow',     // 重定向处理,可选值:// - follow: 自动重定向(默认)// - error: 重定向时报错// - manual: 手动处理(通过 response.redirected 判断)// ========== 来源与安全 ==========referrer: 'about:client', // 来源页地址,可选值:// - "about:client": 隐藏来源(默认)// - "no-referrer": 不发送 Referer 头// - URL: 指定来源地址referrerPolicy: 'no-referrer-when-downgrade', // 来源策略,控制 Referer 头发送规则// 常见值: no-referrer, origin, strict-originintegrity: 'sha256-abc123', // 子资源完整性校验(SRI),用于验证资源是否被篡改// 格式: '哈希算法-哈希值'(如 sha256-xxxx)// ========== 高级控制 ==========keepalive: false,       // 是否允许请求在页面卸载后继续发送(用于埋点/日志)signal: null,           // 绑定 AbortSignal 对象以取消请求(结合 AbortController)priority: 'auto',       // 请求优先级(实验性),可选值: high, low, autowindow: null            // 必须设为 null(保留字段,用于未来扩展)
});

Content-Type

告知接收方(如服务器或浏览器)​传输的数据是什么类型,例如:JSON、HTML、表单、图片等。

。。。


⚠️ 使用fetch 注意事项

  1. ​HTTP 错误不会触发 catch
    问题:fetch 仅在网络故障(如无法连接)时 reject,但 HTTP 错误(如 404、500)会正常返回响应。

  2. 默认不携带 Cookie
    ​问题:跨域请求默认不发送 Cookie,可能导致身份验证失败。
    ​解决:设置 credentials: ‘include’:

  3. 请求体需要手动序列化
    ​问题:发送 JSON 数据时需手动调用 JSON.stringify(),而 axios 等库会自动处理。

  4. 响应体只能读取一次
    ​问题:调用 response.json() 或 response.text() 后,响应体会被标记为已使用,再次读取会报错。
    ​解决:使用 response.clone() 克隆响应

⚠️ 缺陷

  1. ​不支持同步请求
    ​问题:fetch 只有异步模式,无法像 XMLHttpRequest 一样执行同步操作。
    ​解决:使用 async/await 模拟同步逻辑
async function fetchData() {const response = await fetch(url);const data = await response.json();return data;
}
  1. ​取消请求依赖 AbortController
    ​问题:取消请求需要额外引入 AbortController,不如 XMLHttpRequest.abort() 直接。
    ​解决:
const controller = new AbortController();
fetch(url, { signal: controller.signal });
controller.abort(); // 取消请求
  1. ​缺乏上传/下载进度监控
    ​问题:fetch 无法原生监控上传或下载进度,而 XMLHttpRequest 支持。
    ​解决:通过流式处理或自定义逻辑间接实现:
const response = await fetch(url);
const reader = response.body.getReader();
let received = 0;
while (true) {const { done, value } = await reader.read();if (done) break;received += value.length;console.log(`Received ${received} bytes`);
}

相关文章:

es6 fetch

对比XHR 🛠️ fetch 所有配置项 fetch(url, {// 核心配置 method: GET, // HTTP 方法: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONSheaders: { // 请求头(支持 Headers 对象或普通对象)Content-Type: applicati…...

Apache Tomcat RCE漏洞(CVE-2025-24813)

一,漏洞描述 该漏洞在于 Tomcat 在处理不完整PUT请求上传时,会使用了一个基于用户提供的文件名和路径生成的临时文件。 二,漏洞条件 1,默认 Servlet 启用了写权限(默认禁用) 2,启用了部分PUT…...

Apache HttpClient使用

一、Apache HttpClient 基础版 HttpClients 是 Apache HttpClient 库中的一个工具类,用于创建和管理 HTTP 客户端实例。Apache HttpClient 是一个强大的 Java HTTP 客户端库,用于发送 HTTP 请求并处理 HTTP 响应。HttpClients 提供了多种方法来创建和配…...

智能汽车图像及视频处理方案,支持视频星轨拍摄能力

美摄科技作为智能汽车图像及视频处理领域的先行者,正以革新性的技术引领着行业的未来发展。美摄科技智能汽车图像及视频处理方案,一个集高效性、智能化、画质增强于一体的创新解决方案,旨在重塑智能汽车图像画质的新标准,并支持前…...

【微服务架构】本地负载均衡的实现(基于随机算法)

前言 负载均衡 概念:一种将网络流量或业务请求均匀分配到多个服务器或服务实例上的技术,旨在提高系统的可用性、性能和可伸缩性。作用: 提高性能:通过将请求分散到多个实例上,避免单个实例因请求过多而过载&#xff…...

C盘急救实录:从爆红到畅快

极速救援通道(懒人专享) 老规矩,先上王炸方案!”小番茄C盘清理器”直达链接:https://cclean-cdn.xkbrowser.com/cleanmaster/FanQieClean_13046_st.exe 这个神器有三绝: 智能扫描引擎:能识别23…...

从零开始理解基于深度学习的语义分割模型:RCA与RCM模块的实现

从零开始理解基于深度学习的语义分割模型:RCA与RCM模块的实现 随着深度学习技术的发展,图像分割任务取得了长足的进步。本文将从一个具体的PyTorch代码实例出发,带大家了解一种 novel 的语义分割网络架构——RCA(Rectangular Self-Calibration Attention)和 RCM(Rectang…...

openGl片段着色器的含义

片段着色器的含义及代码中的应用说明: 1. 片段着色器的基本概念 片段着色器(Fragment Shader)是OpenGL着色器管线中的关键组件,主要用于计算屏幕空间中每个片段(对应像素)的最终颜色。它是图形渲染流程的…...

ROS2 部署大语言模型节点

4GB GPU的DeepSeek-Coder 1.3B模型,并且它已经被量化或优化过。以下是具体的步骤: 安装必要的依赖项: pip install transformers torch grpcio googleapis-common-protos创建一个新的ROS 2包: cd ~/ros2_ws/src ros2 pkg creat…...

UART转APB模块ModelSim仿真

一、简介 之前介绍过一个UART转AHB模块,这个代码的框架有个好处,就是FPGA内总线接口比较容易修改成其他总线接口。下图是UART转AHB模块中子模块uart_ahb_mst的框图,主要有三个状态机: (1) UART_RX_FSM将接收…...

【LeetCode 题解】算法:4.寻找两个正序数组的中位数

1. 引言:挑战 LeetCode 经典算法题 在算法这片广袤无垠的天地里,一道道经典题目宛如夜空中熠熠生辉的星辰,持续吸引着开发者们投身其中,不断探索。今天,我们继续将目光聚焦于 LeetCode 平台上一道极具代表性的题目&am…...

基于 SGLang 部署 Qwen2.5 7B 模型

本文将详细介绍如何使用 SGLang 快速部署 Qwen2.5 7B 模型,并深入探讨 SGLang 的关键性能优化技术,以及预期可以达到的延迟和吞吐量。 1. SGLang 框架介绍 SGLang 旨在解决 LLM 服务中的核心挑战: 高延迟: LLM 推理通常需要较长的计算时间,导致响应延迟高。低吞吐量: 由…...

Cesium 自定义路径导航材质

cesium 自定义路径导航纹理图片随便更换,UI 提供设计图片即可达到效果; 打开小马的weix 关注下 搜索“技术链” 回复关键词《《路径》》获取原始代码; 拿到就能用轻松解决!帮忙点个关注吧!...

JDBC 连接字连接 KingbaseES支持主从负载均衡参数说明。

JDBC 连接字符串是用于连接 KingbaseES(人大金仓数据库)的,支持主从负载均衡。让我们逐一解析各个参数的作用,并探讨如何调整到最优。 参数解析 jdbc:kingbase8://10.10.14.19:54321/xxx_onlinejdbc:kingbase8://:指定…...

Java运行时的堆、栈和方法区

目录 1. 堆(Heap)存储内容与线程关系 2. 栈(Stack)存储内容与线程关系 3. 方法区(Method Area)存储内容与线程关系变动 1. 堆(Heap) 存储内容 对象实例(对象实例的全部数…...

【江协科技STM32】BKP备寄存器RTC实时时钟(学习笔记)

BKP备寄存器 BKP简介 BKP(Backup Registers)备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒&#xff0…...

卷积神经网络 - 参数学习

本文我们通过两个简化的例子,展示如何从前向传播、损失计算,到反向传播推导梯度,再到参数更新,完整地描述卷积层的参数学习过程。 一、例子一 我们构造一个非常简单的卷积神经网络,其结构仅包含一个卷积层和一个输出…...

亮数据爬取API爬取亚马逊电商平台实战教程

前言 在当今数据驱动的商业环境中,企业需要快速、精准地获取互联网上的公开数据以支持市场分析、竞品调研和用户行为研究。然而,传统的手动网页爬取方式面临着诸多挑战:IP封锁、验证码干扰、网站结构频繁变更,以及高昂的运维成本…...

[CLS] Token 在 ViT(Vision Transformer)中的作用与实现

[CLS] Token 在 ViT(Vision Transformer)中的作用与实现 1. 什么是 [CLS] Token? [CLS](classification token)是Transformer模型中一个可学习的嵌入向量,最初在 BERT(Bidirectional Encoder …...

基于网启PXE服务器的批量定制系统平台

项目概述 1.需求 公司新购了一批服务器和台式机,需要为台式机和服务器安装系统,一部分需要安装国产OpenEuler,一部分要求安装CentOS 7.9,同时也要满足定制化需求,即按要求分区安装相应软件。 2.使用开源软件 &…...

Reactor/Epoll为什么可以高性能?

在 Reactor 模式中使用 epoll_wait 实现低 CPU 占用率的核心原理是 ​事件驱动的阻塞等待机制,而非忙等待。以下通过分步骤解析其工作原理和性能优势: void network_thread() {int epoll_fd epoll_create1(0);epoll_event events[MAX_EVENTS];// 添加U…...

-JavaEE 应用Servlet 路由技术JDBCMybatis 数据库生命周期

#JavaEE-HTTP-Servlet& 路由 & 周期 参考: https://blog.csdn.net/qq_52173163/article/details/121110753 1 、解释 Servlet 是运行在 Web 服务器或应用服务器上的程序 , 它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数…...

在本地Windows机器加载大模型并生成内容

本篇演示在本地机器下载和加载大模型并获取AI产生的内容。简单起见,使用的大模型是Qwen2.5-0.5B-Instruct,整个模型的所有文件不到1G。 Qwen2.5-0.5B-Instruct 是阿里巴巴云 QWen 团队基于 Transformer 架构开发的轻量级指令调优语言模型,专…...

热门面试题第14天|Leetcode 513找树左下角的值 112 113 路径总和 105 106 从中序与后序遍历序列构造二叉树 (及其扩展形式)以一敌二

找树左下角的值 本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下 题目链接/文章讲解/视频讲解:https://programmercarl.com/0513.%E6%89%BE%E6%A0%91%E5%B7%A6%E4%B8%8B%E8%A7%92%E7%9A%84%E5%80%BC.html 我们来分析一下题目&#…...

shopify跨境电商行业前景与规模

Shopify跨境电商行业前景与规模分析 一、行业背景 Shopify 是一个全球知名的电子商务平台,它为小型企业到大型企业提供了创建和管理在线商店的工具。近年来,随着全球化进程的加快以及互联网技术的发展,跨境电商已经成为国际贸易的重要组成部…...

【计算机网络】-计算机网络期末复习题复习资料

一、计算机网络体系结构(800字) 1. OSI参考模型 七层结构:物理层→数据链路层→网络层→传输层→会话层→表示层→应用层 各层核心功能: 物理层:比特流传输(如RJ45、光纤接口) 数据链路层&…...

游戏中的碰撞检测算法

参考博客Sort, sweep, and prune: Collision detection algorithms...

批归一化(Batch Normalization)与层归一化(Layer Normalization)的区别与联系

文章目录 一、Batch normalization 理论与应用1. 理论解释2. 数值例子 二、Layer normalization 理论与应用1. 理论解释2. 数值例子 三、Layer Normalization 和 Batch Normalization 的区别四、《Transformers without Normalization》笔记 一、Batch normalization 理论与应用…...

12届蓝桥杯—货物摆放

货物摆放 题目描述 小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 nn 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所…...

c++进阶--哈希表的实现

大家好,今天我们来学习ubordered_set和unordered_map的底层哈希表。 目录 哈希表实现 1. 哈希概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因⼦ 1.4 将关键字转为整数 1.5 哈希函数 下面我们介绍几种哈希函数:1.5.1 除法散列法/除留余数法 1.…...