你了解vue跨越请求吗?(vue的axios跨域请求)

简介: 你了解vue跨越请求吗?(vue的axios跨域请求)
前端和服务器请求数据是很常见的事情,毕竟数据不是死的,而是通过请求服务器给我们返回的动态数据,这样才能保证数据的动态化,那么,在vue里如何来发送请求呢?

    发送请求其实有很多种方案,比如原生的new XMLHttpRequest()来请求,不过很麻烦,几乎不常用。

    然后就是jQuery的封装的一些请求,例如get(),post(),$.ajax()可以简单的来发送请求,但是我们用的是vue框架,所以也不是很推荐用jQuery。

    那我们下来先看看vue是怎么来发送请求的吧:

首先是引入axios的资源包,在vue里是推荐用axios发送请求的

npm i axios

下载好后就可以导入axios请求包

import axios from 'axios'

     我们在不配置任何的情况下,去发送axios请求:

axios({

    url:"/api/eat",
    method:"GET",
  }).then((res)=>{
    console.log(res.data);
  },errot=>{
    console.log("错误");
  })

然后我写了一个测试服务器:

const express = require("express");

let app = express();

app.get('/eat',(request,response)=>{

const a = {
    name:"苹果",
    pre:18,
    love:"yes"
}
console.log("有人请求服务器"+request.url);
response.send(a);

})

app.listen(5000,()=>{

console.log("5000端口已经开启");

})

然后我们去浏览器点击按钮发送请求看看能不能成功

点击发送请求:

     可以看到是收不到数据内容的,为什么呢?其实很简单,我们的前端网站服务器端口是8080,去请求5000端口的数据,因为违背了同源策列,所以是不可能请求到数据的。

    那么,该如何解决呢?办法有两种,第一种是前端找一个代理服务器帮我们发请求,这样就不用我们自己发了,第二种方法就是通过后端的cors来解决跨域问题,针对前后端的解决方案我们都来看一下。

    首先先看一下前端来解决的方法:

vue框架是给我们提供了解决方法的,可以去配置一个中间代理服务器来帮我们请求数据,具体实现如下:

    第一步是打开vue的vue.config.js文件夹,修改成如下代码:

module.exports = {
devServer: {

proxy: {
  '/api': {
    target: '<url>',
    ws: true,
    changeOrigin: true
  },
  '/foo': {
    target: '<other_url>'
  }
}

}
}
然后简单说一下,target里面的值应该怎么设置,target里面要设置成服务器端口

target: 'http://localhost:5000'

    我这里的服务器是5000端口,所以这里设置的是5000,大家根据自己端口的不同设置即可

这样设置以后,重启vue-cli就可以生效了,代理服务器就设置完成了,这样就可以完成跨域访问数

据了,我们来看一下最终获取数据情况:

这次就完成了请求数据并返回了数据内容。

    那么接下来是第二种后端来解决跨域问题:

在服务器上我们可以设置cors来解决跨域,首先还是安装cors的资源包

npm i cors

安装好后引用require("cors")即可,引用完成后,挂载给路由使用就可以完成跨域解决:

let cors = require("cors")

app.use(cors());
最后也是可以收到数据请求:

最后是后端设置response.setHeader('Access-Control-Allow-Origin', '*')可以让所有的端口都可以访问这个服务器

目录
相关文章
|
6天前
|
Python
axios的get请求传入数组参数
axios的get请求传入数组参数
|
4天前
|
JavaScript API
Vue中如何完成对axios的二次封装、统一接口管理
这篇文章介绍了在Vue项目中如何对axios进行二次封装,实现接口的统一管理和简化请求过程,包括创建api包、编写request.js、在main.js中引入封装好的axios以及在项目中发送请求的方法。
Vue中如何完成对axios的二次封装、统一接口管理
|
10天前
|
JavaScript UED
以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!
以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!
|
17天前
|
JavaScript 前端开发
vue引入axios出现Module parse failed: Unexpected token (5:2)
vue引入axios出现Module parse failed: Unexpected token (5:2) 页面显示 Cannot GET /
|
1月前
|
JSON JavaScript 前端开发
Vue中的axios深度探索:从基础安装到高级功能应用的全面指南
在Vue项目中,高效的前后端通信是构建丰富用户体验的关键。axios作为前端与后端沟通的桥梁,其重要性不言而喻。本文将带您领略axios的魅力,从基本概念、安装方法,到高级应用技巧,助您快速掌握在Vue中利用axios进行HTTP请求的精髓。我们不仅会探讨axios的基础用法,如GET、POST请求,还将深入探索跨域配置、全局注册以及设置拦截器等高级功能,助您轻松实现优雅的前后端通信。
|
1月前
|
存储 资源调度 前端开发
JavaScript 使用axios库发送 post请求给后端, 给定base64格式的字符串数据和一些其他参数, 使用表单方式提交, 并使用onUploadProgress显示进度
使用 Axios 发送包含 Base64 数据和其他参数的 POST 请求时,可以通过 `onUploadProgress` 监听上传进度。由于整个请求体被视为一个单元,所以进度可能不够精确,但可以模拟进度反馈。前端示例代码展示如何创建一个包含 Base64 图片数据和额外参数的 `FormData` 对象,并在上传时更新进度条。后端使用如 Express 和 Multer 可处理 Base64 数据。注意,实际进度可能不如文件上传精确,显示简单加载状态可能更合适。
131 0
|
1月前
|
NoSQL 前端开发 测试技术
若依修改,若依如何发送请求---王清江07,axios的请求在request.js文件中,若依发送GET请求,必须用param
若依修改,若依如何发送请求---王清江07,axios的请求在request.js文件中,若依发送GET请求,必须用param
|
1月前
|
JSON 数据格式
axios发送post请求,如何接受和返回一个axios的字段,解决bug的方法,困难的事情先从简单做起,先从发送一个axios的post请求做起,解决方法查别人的资料,查看F12看network就行
axios发送post请求,如何接受和返回一个axios的字段,解决bug的方法,困难的事情先从简单做起,先从发送一个axios的post请求做起,解决方法查别人的资料,查看F12看network就行
|
1月前
|
JavaScript
文本,前后端数据交互,简单请求,如何去给data数据赋值,在mounted()里赋值,利用axios发送的请求,res就是数据集,就是后端的数据,this.users = res.data.data
文本,前后端数据交互,简单请求,如何去给data数据赋值,在mounted()里赋值,利用axios发送的请求,res就是数据集,就是后端的数据,this.users = res.data.data
|
1天前
|
JavaScript
Vue学习之--------路由的query、params参数、路由命名(3)(2022/9/5)
这篇文章详细介绍了Vue路由中的query参数、命名路由、params参数以及props配置的使用方式,并通过实际项目案例展示了它们在开发中的应用和测试结果,同时解释了`<router-link>`的`replace`属性如何影响浏览器历史记录。
Vue学习之--------路由的query、params参数、路由命名(3)(2022/9/5)