axios处理跨域问题

首先npm安装好axios,其次在main.js中引入:

import axios from ‘axios‘

Vue.prototype.$axios = axios //把axios挂载到vue的原型中,在vue中每个组件都可以使用axios发送请求
Vue.prototype.HOME = ‘/api‘ //重要在于这里,Vue.prototype.HOME = ‘/api‘是一个定值,默认指向localhost,所有修改指向路径为‘/api‘,配置文件index.js定义的可跨域路径

第二步就是修改上述所说的config>index.js配置文件

module.exports = {
  dev: {
    // Paths
    assetsSubDirectory: ‘static‘,
    assetsPublicPath: ‘/‘,
    proxyTable: {     //axios跨域处理
      ‘/api‘: {       //此处并非和url一致
        target:‘http://192.168.2.80:8081/‘,
        changeOrigin:true, //允许跨域
        pathRewrite:{
          ‘^/api‘: ‘‘
        }
      }
    }
}
....以下省略
}

最后就是在需要跨域的文件中操作了:

 created() {
      var url = this.HOME + ‘/index***ds/getFe***List‘;  //HOME变量为已挂载的可跨域域名,这里将其拼接完,成为一个完整路径
      this.$axios({  //this代表vue对象,之前在入口文件中把axios挂载到了vue中,所以这里直接用this.$axios调用axios对象
        method: ‘post‘,
        url: url,
        data: {feedType: 1, page: 1, pagesize: 10}
      }).then(function (res) {
        console.log(res);
      }).catch(function (err) {
        console.log(err);
      })
    },
    这样就可以成功跨域,拿到后台返回的数据了。

需要注意的是:在Vue项目中如果我们修改了config里面的文件,请千万要重新启动项目,重新启动项目,重新启动项目,不然一定会报错。

当然,这只是在本地可以正常跨域访问接口,线上的话,还需要和后台协商处理

升级到 Vue3 后,会发现 Vue2 中存放配置的 config 文件夹没有了,大家不要慌张。可以在 package.json 文件的同级目录下创建 vue.config.js 文件。给出该文件的基础配置:

module.exports = {
    outputDir: ‘dist‘,   //build输出目录
    assetsDir: ‘assets‘, //静态资源目录(js, css, img)
    lintOnSave: false, //是否开启eslint
    devServer: {
        open: true, //是否自动弹出浏览器页面
        host: "localhost",
        port: ‘8081‘,
        https: false,   //是否使用https协议
        hotOnly: false, //是否开启热更新
        proxy: null,
    }
}

Vue3 解决跨域,内容只有第二步配置代理 和 Vue2 不同,其他的一致。

devServer: {
    open: true, //是否自动弹出浏览器页面
    host: "localhost",
    port: ‘8081‘,
    https: false,
    hotOnly: false,
    proxy: {
        ‘/api‘: {
            target: ‘https://www.v2ex.com/api‘, //API服务器的地址
            changeOrigin: true,
            pathRewrite: {
                ‘^/api‘: ‘‘
            }
        }
    },
}

原文地址:https://blog.51cto.com/13550695/2460984

时间: 2024-10-10 20:05:35

axios处理跨域问题的相关文章

在vue中使用axios实现跨域请求并且设置返回的数据的格式是json格式,不是jsonp格式

在vue中使用axios实现跨域请求 需求分析:在项目中需要抓取qq音乐的歌曲列表的数据,由于要请求数据的地址url=https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg.从qq音乐的官网上可以看到该请求的请求头中的referer中的域名是y.qq.com(发送请求页面的域名),而host的域名是c.y.qq.com(被请求页面的域名),由于两者不一样,所以不能通过前端直接发送请求给qq服务器去拿数据.这时候需要服务器做一个代理

记录:使用springboot的cors和vue的axios进行跨域

一.编写一个配置类,并且注册CorsFilter: 注意允许跨域的域名不要写错 @Configuration public class ZysuyuanCorsConfiguration { @Bean public CorsFilter corsFilter() { // 初始化cors配置对象 CorsConfiguration corsConfiguration = new CorsConfiguration(); // 允许跨域的域名,如果要携带cookie,不能写*,*代表所有域名都可

【VUE】vue在vue-cli3环境下基于axios解决跨域问题

网上的绝大部分教程解决vue+axios跨域问题都不能直接适用vue-cli3.这是因为vue-cli3不一样的配置方式导致的. 如果是使用vue-cli3构建的项目,那么默认是没有config.js文件的.按照官方文档介绍,每个人可以通过在项目根目录下建立vue.config.js文件,配置属于自己的config文件. 之后按照网上其他的解决axios跨域问题的方案实施即可. // vue.config.js module.exports = { publicPath: '/', devSer

axios FastMock 跨域 代理

发送请求: 实现:发送请求,获取数据. 原本想自己写服务,后来无意间找到FastMock这个东东,于是就有了下文... 首先我安装了axios,在fastmock注册好了并创建了一个接口,怎么搞自行百度. Q&A: Q:怎么请求到? A:当然是用axios了. 代码如下: <script> export default { name: 'HelloWorld', data () { return { user:'' } }, mounted () { console.log('加载..

.net core3.1 webapi + vue.js + axios实现跨域

我所要讲述的是,基于.net core3.1环境下的webapi项目,如何去使用axios对接前端的vue项目 既然谈到axios,这里贴出axios的官方文档地址: http://www.axios-js.com/zh-cn/docs/ 首先是前端部分进行设置 第一步,在vue项目中安装axios 在vs code的终端中输入命令 npm install axios 稍等片刻,即可完成安装 第二步,构建axios的测试api 首先需要在main.js中,引入前面安装的axios 然后在某个组件

vue-cli3 axios解决跨域问题

这种错误就是跨域问题: 我百度了各种方法,最终下面这种方法解决了,直接上代码:  解决: 如果没安装axios: npm install axios -save //安装axios main.js //引入axios import axios from 'axios' Vue.prototype.axios=axios axios.defaults.baseURL = '/api' 我用的是vue-cli3开发的项目,没有vue.config.js目录,这个是我新建的 vue.config.js

解决vue跨域axios异步通信

在项目中,常常需要从后端获取数据内容.特别是在前后端分离的时候,前端进行了工程化部署,跨域请求成了一个前端必备的技能点.好在解决方案很多. 在vue中,在开发中,当前使用较多的是axios进行跨域请求数据,但不少人遇到如下问题: 异步通信,无法同步执行 无法集中管理 不便阅读 还未请求成功就调转了 then里面的逻辑越来越繁杂 以往的网络请求的写法如下: // main.js // 引入axios import axios from 'axios' Vue.prototype.$axios =

再遇CORS -- 自定义HTTP header的导致跨域

指路牌 后端配置好了跨域,但是前端在HTTP header添加token后,又产生跨域的问题 Flask.Vue(Axios).跨域 适用场景 前后端分离,想要使用token来管理登录状态,或调用后台接口 环境 平台无关 参考博客 axios 在header中配置token信息后,向后端请求会报跨域的问题.但是用postman测试的时候没有什么问题. 这个问题的回答其实没有给出直接性的帮助,甚至回答的有点奇怪,但是帮我打开了思路. 背景 出于多种考虑,放弃了使用类似WordPress这种现成博客

Vue中如何使用axios发送jsonp跨域验证

https://cnodejs.org/topic/5930430f03dba3510d8a62c6 在使用axios发送请求时,服务器端设置 res.header("Access-Control-Allow-Origin", "*");可以正确得到结果 当服务器端不设置允许跨域时,使用jsonp方式发送就不行了,提示错误如下 XMLHttpRequest cannot load http://localhost:3000/axios?cb=cb. No 'Acce