写这篇多少有点心情复杂,毕竟因为一个巨巨巨巨没意思的bug卡了两整天…
废话不多说啦,开篇入题叭,希望大家都能改好自己的bugggggg!!!

1.vite.config.js配置

注意:因为我是用vite创建的,不是vue-cli,当时搜了好多教程都教的是新建一个vue.config.js,发现根本没有生效,所以,如果使用vite创建的项目就在vite.config.js里面配置如下代码:

以我要访问的疫情数据api为例,原api地址:https://api.inews.qq.com/testaxios/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';export default defineConfig({plugins: [vue()],server: {port: 3000,proxy: {'/testaxios': {target: 'https://api.inews.qq.com/',// target就是你要访问的目标地址,可以是基础地址,这样方便在这个网站的其他api口调用数据ws: true,changeOrigin: true,rewrite: (path) => path.replace(/^\/testaxios/, ''),// 要记得加rewrite这句},},},
})

2.api文件

我写代码的时候,把api相关的调用函数封装在了一个文件里面,在api/index.js文件里,然后其他地方在用的时候就可以直接调用函数了。

除此之外,axios的请求也被我封装起来了,copy的网上的封装代码,也可以直接引入axios,需要的话拿走就好了。

api / index.js

import axios from "../utils/requst"
// import axios from "axios"
const api = {// 疫情数据getNcov(){return axios.get("testaxios/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard")},// 城市数据getNcovCity(){return axios.get("testaxios/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf")},getNcovCity2(){return axios.get("newsqa/v1/query/inner/publish/modules/list?modules=chinaDayList,chinaDayAddList,nowConfirmStatis,provinceCompare")}
}
export default api;

注意:这里前面只要加上你上面配置的前缀testaxios(前面不用 / 了),后面跟着原地址的后半部分就欧克了!

utils / requst.js

import axios from "axios"
import qs from "querystring"/*** 处理失败的方法* status:状态码* info:信息*/
const errorHandle = (status,info) =>{switch(status){case 400:console.log("语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。")break;case 401:// token:令牌console.log("服务器认证失败")break;case 403:console.log("服务器已经理解请求,但是拒绝执行它");break;case 404:console.log("请检查网络请求地址")break;case 500:console.log("服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。")break;case 502:console.log("作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。")break;default:console.log(info)break;}
}/*** 创建axios实例对象*/const instance = axios.create({// 公共配置// baseURL:"http://iwenwiki.com",timeout:8000
})/*** 处理拦截器*//*** 请求拦截*/
instance.interceptors.request.use(config => {if(config.method === "post"){config.data = qs.stringify(config.data)}return config},error => Promise.reject(error)
)/*** 响应拦截*/
instance.interceptors.response.use(// 完成了response => response.status === 200 ? Promise.resolve(response) : Promise.reject(response),error => {const { response } = error;errorHandle(response.status,response.info);}
)export default instance

3.调用api相关函数

我是在home.vue里面调用的,直接import api文件以后就可以直接调用函数了

mounted(){api.getNcov().then(res=>{console.log(res.data)}).catch((error)=>{console.log(error)});}

没啦!!!!!!!!!! 冲啊啊啊啊啊啊啊!!!!!!!!!

vue3+vite项目跨域配置(踩坑无数篇)相关推荐

  1. antdPro项目跨域配置

    使用antdPro创建的项目中,在config.js文件中,已经进行了部分的项目配置,其中proxy代理的相关的配置代码也有,但是并不是我们需要的代理地址,所以我们自己还需要根据项目进行更改. 1.c ...

  2. 跨域配置-Chorme坑

    Nginx进行跨域配置 1.找到对应的网站添加跨域配置,然后重启Nginx server { listen 8880; server_name localhost; #charset koi8-r; ...

  3. cors 前后端分离跨域问题_前后端分离之CORS跨域访问踩坑总结

    前言 前后端分离的开发模式越来越流行,目前绝大多数的公司与项目都采取这种方式来开发,它的好处是前端可以只专注于页面实现,而后端则主要负责接口开发,前后端分工明确,彼此职责分离,不再高度耦合,但是由于这 ...

  4. html跨域传值,iframe跨域传值踩坑

    我在React项目中使用iframe加载angular项目的页面,想要传一串用户信息,由于跨域,采用了HTML5的新方法postMessage(). 花了很多时间,就是传不过去消息,然后angular ...

  5. 黑马头条移动端接口丨跨域丨踩坑

    新接口: http://toutiao.itheima.net/ 解决跨域: vue.config.js中配置代理 module.exports = {pages: {index: {//入口entr ...

  6. Vue+Flask前后端分离 Vue3跨域配置

    Vue+Flask前后端分离 Vue3跨域配置 前端端口号为8080 后端端口号为5000 问题描述 问题解决 接口路径映射 前端端口号为8080 后端端口号为5000 后端端口API 代码片. @a ...

  7. html 跨域_常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

  8. 常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

  9. 解决方案:SpringBoot分布式项目跨域

    解决方案:SpringBoot分布式项目跨域 场景: web端:localhost:8001 后台user服务:localhost:9001 请求:web端请求 后台user服务,报跨域异常 异常信息 ...

最新文章

  1. tornado缓存技术
  2. ZOJ 38727(贪心)
  3. mysql安装 经验_MySQL安装教程 这些经验不可多得
  4. 双11行业“三连冠”,鞋王百丽走对了哪几步?
  5. 根据屏幕分辨率获取css,根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码...
  6. 【线上直播】深度学习简介与落地实战经验分享
  7. 连接linux常用的工具
  8. 电信笔试C语言,2021中国电信考试试题附答案(12)
  9. c语言车牌号5位数,为何有的车牌是五位数字,有的加英文字母?终于知道原因了!...
  10. C++高级编程资料汇总(参考手册+电子书+编程思想+算法分析)
  11. python 提取字幕_使用 Python 提取字幕文件
  12. exchange server 2007 边缘传输服务器 垃圾邮件,边缘传输 启用反垃圾邮件更新向导 启用反垃圾邮件更新页...
  13. 科里奥利质量流量计的4个检定方法
  14. Redis 集群规范(中文稿)(MOVED错误码及ASK错误码
  15. yolo v1论文翻译-整理
  16. 文件重命名,文件名快速修改重命名
  17. 小米Java笔试_JAVA后端笔试试题(一)
  18. 酉变换 matlab,数字图像处理:原理与实践(MATLAB版)
  19. linux企业级应用实战运维和调优资源,Linux企业级应用实战、运维和调优
  20. ios共享账号公众号_forest 专注森林 ios下载账号分享 公众号 iphone ipad

热门文章

  1. Codeforces Round #396(Div. 2)
  2. kubernetes实战篇之Dashboard的访问权限限制
  3. 图片怎么转成Excel表格文件?分享两个可以实现的方法
  4. 北漂程序员深夜emo发帖求助:女朋友走了我很孤独 ......
  5. 沟通三要素--场景,气氛,情绪
  6. css字号 h5_h5-web字体和字体图标
  7. 登录服务器显示太忙怎么办,吃鸡总提示服务器太忙怎么办 | 手游网游页游攻略大全...
  8. HTML5新增属性来实现立体字效果
  9. 数据解读 | 外卖越来越贵,谁在中间赚差价?
  10. AS3连连看源码教程(三)