Vue3 网络请求

文章目录

  • Vue3 网络请求
    • CORS问题
    • ajax
    • fetch
    • axios

Vue3 网络请求

CORS问题

同源:指的是当前用户所在的URL与被请求的URL的协议名、域名、端口必须完全相同。一旦有一个或多个不同,就是非同源请求,也就是我们经常说的跨域请求,简称“跨域”。

同源策略:是浏览器的一个安全策略,只不允许部分跨域请求,如 Ajax 请求就受到同源策略限制。但常见的<img><link><script> 标签发出的跨域请求,是不受同源策略限制的,也就是它们发送跨域请求,浏览器会正常处理响应,而AJAX发送跨域请求,浏览器就不会正常处理响应。

在 Vue 中通常配置代理服务器解决Ajax跨域问题。

代理服务器原理:浏览器发送同源请求,由代理服务器将请求转发到跨域的目标服务器上,代理服务器得到响应后,自动传递给浏览器。

解决方式:

配置 vite.config.js 文件:

import {defineConfig} from "vite";
import vue from "@vitejs/plugin-vue";export default defineConfig({plugins: [vue()],server: {// 处理CORSproxy: {// 处理“/path”前缀的路径"/path": {// 替换目标接口target: "https://www.wanandroid.com",// 表示开启代理,允许跨域changeOrigin: true,// 重写路径,删除"/path"rewrite: (path) => path.replace(/^\/path/, ""),},},},
});

ajax

AJAX 即 “Asynchronous JavaScript and XML”(异步的 JavaScript 和 XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页数据的技术。

<script setup>
import {ref} from "vue";
import axios from "axios";const url = "/path/banner/json";function ajax(url) {return new Promise((resolve, reject) => {const xhr = new XMLHttpRequest();xhr.open("GET", url);xhr.onreadystatechange = () => {if (xhr.readyState === 4) {if (xhr.status >= 200 && xhr.status < 300) {resolve(JSON.parse(xhr.responseText));} else {// 请求失败reject(new Error(`请求失败:${xhr.status} - ${xhr.statusText}`));}}};xhr.send();});
}function handleAjax() {requestTool.value = "ajax";list.value = [];ajax(url).then((res) => {list.value = res.data;}).catch((err) => {alert(err.message);});
}const list = ref([]);
const requestTool = ref("ajax");</script><template><h1>网络请求</h1><p> {{ requestTool }} </p><button @click="handleAjax">ajax</button><ul><li v-for="item in list" :key="item.id"><span>{{ item.title }}</span><img style="width: 150px;" :src="item.imagePath" alt=""></li></ul>
</template>

fetch

Fetch 是一种现代的 JavaScript API,用于在 Web 应用中进行网络请求,它提供了一种更简洁、灵活的方式来处理 HTTP 请求和响应,是对 XMLHttpRequest 的一种替代方案。

Fetch 基于 Promise 实现,使用原生的 JavaScript 语法来发送请求和处理响应。它返回一个 Promise 对象,该 Promise 会在请求完成后被 resolve 或 reject,使得异步操作的处理更加直观和易于管理。

function handleFetch() {requestTool.value = "fetch";list.value = [];fetch(url).then(res => res.json()).then((res) => {list.value = res.data;}).catch((err) => {alert(err.message);});
}

axios

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 环境。它提供了更便捷的方法来发送 HTTP 请求,并对请求和响应进行拦截、处理等操作,是在 JavaScript 项目中进行网络请求的常用库。

Axios 内部基于 XMLHttpRequest(在浏览器环境)或 http 模块(在 Node.js 环境)来发送请求,通过 Promise 来处理异步操作,同时提供了丰富的配置选项和拦截器机制,方便对请求和响应进行统一处理。

function handleAxios() {requestTool.value = "axios";list.value = [];axios.get(url).then(res => {list.value = res.data.data;}).catch((err) => {alert(err.message);});
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/66804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 之某度协议登录,JS逆向,手机号绑定,获取CK

.NET兼职社区 .NET兼职社区 .NET兼职社区 .NET兼职社区 有需要指导&#xff0c;请私信我留言V或者去社区找客服。

深入Android架构(从线程到AIDL)_20 IPC的Proxy-Stub设计模式02

2、 IBinder接口的一般用途 前言 一般用途 Android的IPC框架仰赖单一的IBinder接口。此时Client端调用IBinder接口的transact()函数&#xff0c;透过IPC机制而调用到远方(Remote)的onTransact()函数。在Java层框架里&#xff0c; IBinder接口实现于Binder基类&#xff0c;如下…

C++ Json库的使用

1.Json库的使用&#xff0c;包含C Json的创建、读写、字符串Json互转等&#xff0c;覆盖日常使用场景 前提&#xff1a;按照参考的文章部署好nlohmann/json 上代码 #include <iostream> #include <fstream> #include "nlohmann/json.hpp" using json n…

初学stm32 --- ADC单通道采集

目录 ADC寄存器介绍&#xff08;F1&#xff09; ADC控制寄存器 1(ADC_CR1) ADC控制寄存器 2(ADC_CR2) ADC采样时间寄存器1(ADC_SMPR1) ADC采样时间寄存器2(ADC_SMPR2) ADC规则序列寄存器 1(ADC_SQR1) ADC规则序列寄存器 2(ADC_SQR2) ADC规则序列寄存器 3(ADC_SQR3) AD…

FPGA技术的深度理解

目录 引言 FPGA的基本原理 结构组成 工作原理 FPGA的设计流程 设计阶段 编程阶段 实现阶段 FPGA的应用领域 FPGA编程技巧和示例代码 编程技巧 示例代码 结论 引言 FPGA&#xff08;现场可编程门阵列&#xff09;是一种可编程的集成电路&#xff0c;它允许用户根据…

@SneakyThrows 注解详解

SneakyThrows 注解详解 1. 基本介绍 SneakyThrows 是 Lombok 提供的注解&#xff0c;用于简化异常处理&#xff0c;自动生成 try-catch 代码块&#xff0c;将检查型异常转换为非检查型异常。 2. 使用对比 2.1 传统写法 public String readFile(String path) {try {return …

【经典神经网络架构解析篇】【1】LeNet网络详解:模型结构解析、优点、实现代码

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

qml SpringAnimation详解

1. 概述 SpringAnimation 是 Qt Quick 中用于模拟弹簧效果的动画类。它通过模拟物体在弹簧力作用下的反应&#xff0c;产生一种振荡的动画效果&#xff0c;常用于模拟具有自然回弹、弹性和振动的动态行为。这种动画效果在 UI 中广泛应用&#xff0c;特别是在拖动、拉伸、回弹等…

day03-前端Web-Vue3.0基础

目录 前言1. Vue概述2. 快速入门2.1 需求2.2 步骤2.3 实现 3. Vue指令3.1 介绍3.2 v-for3.2.1 介绍3.2.2 演示3.2.3 v-for的key3.2.4 案例-列表渲染 3.3 v-bind3.3.1 介绍3.3.2 演示3.3.3 案例-图片展示 3.4 v-if & v-show3.4.1 介绍3.4.2 案例-性别职位展示 3.6 v-model3.…

Jenkins pipeline 发送邮件及包含附件

Jenkins pipeline 发送邮件及包含附件 设置邮箱开启SMTP服务 此处适用163 邮箱 开启POP3/SMTP服务通过短信获取TOKEN &#xff08;保存TOKEN, 后面Jenkins会用到&#xff09; Jenkins 邮箱设置 安装 Build Timestamp插件 设置全局凭证 Dashboard -> Manage Jenkins …

JSON.stringify 实现深度克隆的缺陷

在前端开发中&#xff0c;深克隆&#xff08;Deep Clone&#xff09;和浅克隆&#xff08;Shallow Clone&#xff09;是常见的操作。浅克隆和深克隆的区别主要体现在对象内部嵌套对象的处理方式上。 1. 浅克隆&#xff08;Shallow Clone&#xff09; 浅克隆是指创建一个新对象…

【软考】软件设计师

「学习路线」&#xff08;推荐该顺序学习&#xff0c;按照先易后难排序&#xff09; 1、上午题—计算机系统&#xff08;5~6分&#xff09;[1.8; ] 2、上午题—程序设计语言&#xff08;固定6分&#xff09;[1.9; ] 3、下午题—试题一&#xff08;15分&#xff09; 4、上午题—…

python学opencv|读取图像(二十九)使用cv2.getRotationMatrix2D()函数旋转缩放图像

【1】引言 前序已经学习了如何平移图像&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;二十七&#xff09;使用cv2.warpAffine&#xff08;&#xff09;函数平移图像-CSDN博客 在此基础上&#xff0c;我们尝试旋转图像的同时缩放图像。 【2】…

初学stm32 --- DAC输出

目录 DAC寄存器介绍&#xff08;F1&#xff09; DAC控制寄存器(DAC_CR) DAC通道1的12位右对齐数据保持寄存器(DAC_DHR12R1) DAC软件触发寄存器(DAC_SWTRIGR) DAC输出实验配置步骤 相关HAL库函数介绍 关键结构体介绍&#xff08;F1&#xff09; DAC寄存器介绍&#xff08;F1&…

Stable diffusion的SDXL模型,针不错!(含实操)

与之前的SD1.5大模型不同&#xff0c;这次的SDXL在架构上采用了“两步走”的生图方式&#xff1a; 以往SD1.5大模型&#xff0c;生成步骤为 Prompt → Base → Image&#xff0c;比较简单直接&#xff1b;而这次的SDXL大模型则是在中间加了一步 Refiner。Refiner的作用是什么呢…

知道蛋白uniprot id 进行VFDB注释

https://blog.csdn.net/missinghead/article/details/135699418 【生物信息】VFDB数据库预测毒力因子-CSDN博客 知道蛋白uniprot id 提取蛋白的fasta格式序列&#xff1a;现在uniprot网站下载物种所有蛋白序列文件 conda create -n kp_proteomic conda activate kp_proteomic…

51单片机——串口通信(重点)

1、通信 通信的方式可以分为多种&#xff0c;按照数据传送方式可分为串行通信和并行通信&#xff1b; 按照通信的数据同步方式&#xff0c;可分为异步通信和同步通信&#xff1b; 按照数据的传输方向又可分为单工、半双工和全双工通信 1.1 通信速率 衡量通信性能的一个非常…

【SpringAOP】Spring AOP 底层逻辑:切点表达式与原理简明阐述

前言 &#x1f31f;&#x1f31f;本期讲解关于spring aop的切面表达式和自身实现原理介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &am…

Objective-C语言的软件工程

Objective-C语言的软件工程探讨 引言 在软件工程的领域中&#xff0c;编程语言的选择是至关重要的。Objective-C&#xff0c;作为一种为苹果公司的macOS和iOS操作系统而开发的编程语言&#xff0c;凭借其灵活性和强大的功能被广泛应用于应用开发。然而&#xff0c;随着Swift等…

GO通过SMTP协议发送邮件

什么是SMTP协议 SMTP&#xff08;Simple Mail Transfer Protocol&#xff0c;简单邮件传输协议&#xff09;是用于发送邮件的协议。当一个邮件服务器需要发送邮件给另一个邮件服务器时&#xff0c;它会使用SMTP协议与目标服务器建立连接&#xff0c;并传输邮件内容。SMTP协议的…